【问题标题】:Collection View Selection Mechanism, Is it exists?集合视图选择机制,是否存在?
【发布时间】:2018-01-09 23:38:00
【问题描述】:

好吧,我的collectionView:didSelectItemAtIndexPath: 没有被调用。

我已经阅读了很多答案,没有一个对我有帮助。

没有视图可以触摸并阻止点击(我已经仔细检查)


于是我开始探索:

集合视图有 3 个 GestureRecognizers:

  1. UIScrollViewDelayedTouchesBeganGestureRecognizer
  2. UIScrollViewPanGestureRecognizer
  3. _UIDragAutoScrollGestureRecognizer

如您所见,它们都不是UITapGestureRecognizer

根据docs

当用户成功选择集合视图中的一个项目时,集合视图调用此方法。当您以编程方式设置选择时,它不会调用此方法。

好吧,我应该自己添加一个 TapGesture 识别器吗?并调用委托方法?我不这么认为。 Apple 做了一些事情,但那件事不起作用!

【问题讨论】:

  • 您不需要自己添加点击手势识别器并手动调用委托方法。您必须采取措施阻止集合视图不响应选择。也许发布更多实际的设置代码,以便我们检查。
  • “TapGesture 识别器我自己”正如上面所说的那样。
  • @UpholderOfTruth 我知道我会发布代码,但你会看到我没有做任何事情来阻止点击 collectionView 单元格
  • 一定有什么东西阻止了收集单元的选择。您无需添加自己的手势识别器即可使其工作,如果您添加了任何可能导致问题的方法。您需要做的就是连接数据源(以查看单元格)并连接代理(以响应操作)。
  • @UpholderOfTruth 我已经连接了委托和数据源,它们工作得很好,为了证明这一点,我使用了 collectionView 的 scrollViewDelegate 方法,这也很有效,collectionView 滚动和显示数据,只是选择不起作用,我没有添加任何手势识别器,我希望明天有时间用相关信息和代码更新问题

标签: ios swift uicollectionview uigesturerecognizer selection


【解决方案1】:

好吧,我想通了,我相信它会帮助其他人。感谢所有试图提供帮助的人 - 你提供帮助是因为我认为它不应该起作用,你给了我继续尝试的理由 =]

嗯,我有以下层次结构:

View
|
+----CollectionView
     |
     +----CollectionViewCell
          |
          +----TextView

TextView 填满整个单元格。

问题在于TextView 阻止每次点击而不将其转发到单元格!!

但它确实转发其他触摸(如 Pan)


解决办法是:

cell.textView.isUserInteractionEnabled = false

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 1970-01-01
    • 2015-05-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多