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

时间:2014-02-23 15:32:59

标签: ios ios7 uicollectionview uicollectionviewcell

我有UICollectionView个自定义单元格 - 他们有一个UITextView,主要覆盖整个单元格。使用didSelectItemAtIndexPath时出现问题。触发它的唯一方法是点击UITextView之外。我想让它在您点击的单元格中的任何位置触发,无论是否有文本视图。怎么办呢?

6 个答案:

答案 0 :(得分:24)

didSelectItemAtIndexPath时会调用

none of the subView of collectionViewCell respond to that touch。由于textView会对这些触摸做出响应,因此它会超级won't forward those touches,因此collectionView无法获得它。

覆盖hitTest:withEventcollectionViewCell子类的CollectionView方法,并始终从它们返回self。因此它明确地将collectionView设为first responder

答案 1 :(得分:4)

我建议对每个单元格使用UIGestureRecognizer,并在录制时将其发送到UITextView或其他任何内容,也许可能有更好的解决方案,但由于简单原因,我会使用此1。

答案 2 :(得分:2)

您是否覆盖touchesEnded: withEvent:

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

 [super touchesEnded: withEvent:]

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在特定情况下,UITextView选择UICollectionViewCell,然后切换到属性检查器。取消选中已启用用户互动,它应该可以正常运行。

答案 5 :(得分:0)

只需执行

textview.isUserInteractionEnabled = false