在UITextView上点击时,UICollectionView didSelectItemAtIndexPath未被调用

我有一个带自定义单元格的UICollectionView它们有一个UITextView ,它主要覆盖整个单元格。 这在使用didSelectItemAtIndexPath时出现问题。 触发它的唯一方法是在UITextView外部点击。 我想让它在你点击的单元格中触发,无论是否有文本视图。 如何才能做到这一点?

我建议为每个单元格使用UIGestureRecognizer ,当它被录制以将其发送到UITextView或其他什么时候,也许可能有更好的解决方案,但我会因为简单的原因而使用这个1。

none of the subView of collectionViewCell respond to that touchnone of the subView of collectionViewCell respond to that touch调用didSelectItemAtIndexPath 。 由于textView won't forward those touches响应这些触摸,因此它won't forward those touches到其superView,因此collectionView将无法获取它。

覆盖hitTest:withEvent collectionViewCellCollectionView子类的hitTest:withEvent方法,并始终从它们返回self 。因此它显式地将collectionView作为first responder

你是否覆盖touchesEnded: withEvent:

我今天遇到了同样的问题,我发现我在touchesEnded中有一些自定义逻辑,在collectionview的容器视图之一中,我没有调用

  [super touchesEnded: withEvent:] 

当我在touchesEnded完成我的自定义逻辑时。

添加超级电话后,一切都很好。

当我有一个滚动视图占用我的整个集合视图单元格时,我遇到了这个问题。 虽然上面的所有解决方案都可能正常工作,但我想出了自己优雅的解决方案。 我在滚动视图下面放了一个“选择”标签。 由于标签不是滚动视图的一部分,因此它会将tap事件传递给集合视图。 它还可以作为用户需要操作的一个很好的指示器。