【问题标题】:UIButton behavior changes if collectionView moveItemAt is overridden如果 collectionView moveItemAt 被覆盖,UIButton 行为会发生变化
【发布时间】:2018-06-19 22:38:58
【问题描述】:

我有一个集合视图控制器。集合视图的一个单元格包含一个带有 Touch Down 和 Touch Up Inside 的按钮。

严格来说,按钮在视图控制器的视图中,它是集合视图单元格的子视图。

按下按钮时触发 Touch Down,释放按钮时触发 Touch Up Inside。在按钮未被释放之前,按钮是灰色的,并且不会触发 Touch Up Inside。

这正是我需要的行为。

现在,我已经实现了这两种方法来支持重新排序集合视图的单元格:

func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool

func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) 

如果实现了第二种方法(canMoveItemAt 均返回 true 或 false),则按钮行为发生变化:

  • 只要按下按钮,就会触发 Touch Down 事件,然后立即触发 Touch Up Inside 事件。

    • 按钮在按下时呈灰色,并立即恢复正常状态,就像它被释放时一样

    • 当按钮被释放时,什么都没有发生

我的怀疑是事件从按钮传播到集合视图控制器,但我不知道如何防止它。

谁能帮帮我?

Tks

【问题讨论】:

    标签: ios uibutton uicollectionview


    【解决方案1】:

    你是对的,但如果你停止它,你也停止重新排序。基本上你需要选择你需要什么:要按下的按钮或要拖动的单元格。也许您可以使用 Collection 单元格功能而不是按钮来实现预期的行为。如果您需要按钮来表示正在拖动的单元格,您可以轻松更改按钮状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多