在UITextView上点击时,UICollectionView didSelectItemAtIndexPath未被调用
我有一个带自定义单元格的UICollectionView
它们有一个UITextView
,它主要覆盖整个单元格。 这在使用didSelectItemAtIndexPath
时出现问题。 触发它的唯一方法是在UITextView
外部点击。 我想让它在你点击的单元格中触发,无论是否有文本视图。 如何才能做到这一点?
我建议为每个单元格使用UIGestureRecognizer
,当它被录制以将其发送到UITextView
或其他什么时候,也许可能有更好的解决方案,但我会因为简单的原因而使用这个1。
当none of the subView of collectionViewCell respond to that touch
时none 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
collectionViewCell
或CollectionView
子类的hitTest:withEvent
方法,并始终从它们返回self
。因此它显式地将collectionView作为first responder
。
你是否覆盖touchesEnded: withEvent:
我今天遇到了同样的问题,我发现我在touchesEnded
中有一些自定义逻辑,在collectionview的容器视图之一中,我没有调用
[super touchesEnded: withEvent:]
当我在touchesEnded
完成我的自定义逻辑时。
添加超级电话后,一切都很好。
当我有一个滚动视图占用我的整个集合视图单元格时,我遇到了这个问题。 虽然上面的所有解决方案都可能正常工作,但我想出了自己优雅的解决方案。 我在滚动视图下面放了一个“选择”标签。 由于标签不是滚动视图的一部分,因此它会将tap事件传递给集合视图。 它还可以作为用户需要操作的一个很好的指示器。