UICollectionView didSelectItemAtIndexPath not called when tapped on UITextView

限于喜欢 提交于 2019-12-09 14:40:34

问题


I have a UICollectionView with custom cells- They have a UITextView that mostly covers the entire cell. This presents a problem when using didSelectItemAtIndexPath. The only way to trigger it is by tapping outside the UITextView. I want it to trigger wherever in the cell you tap, whether there is a text view or not. How can this be done?


回答1:


I would suggest to use UIGestureRecognizer for each cell and when it taped to send it to UITextView or whatever , perhaps there maybe a better solutions , but I would use this 1 because of simplicity reasons.




回答2:


didSelectItemAtIndexPath is called when none of the subView of collectionViewCell respond to that touch. As the textView respond to those touches, so it won't forward those touches to its superView, so collectionView won't get it.

override hitTest:withEvent method of your collectionViewCell or CollectionView subclass and always return self from them.so it explicitly makes collectionView as first responder.




回答3:


Do you override touchesEnded: withEvent: ?

I had the same problem today and I found that I have some customised logic in touchesEnded in one of collectionview's container views, and I didn't call

 [super touchesEnded: withEvent:]

when I'm done with my customised logic in touchesEnded.

After adding the super call, everything is fine.




回答4:


I ran into this problem when I had a scroll view taking up my entire collection view cell. While all the solutions above probably work fine, I came up with my own elegant work-around. I put a 'select' label under my scroll view. Since the label is not part of the scroll view, it passes the tap event on to the collection view. It also serves as a nice indicator that an action is required of the user.




回答5:


Thanks to @santhu I was able to resolve this. Since I resolved it on Storyboard I thought it would be good to add the answer here.

Select UITextView in that specific UICollectionViewCell and switch to attribute inspector. The uncheck User interaction enabled and it should work fine. See attached screenshot!



来源:https://stackoverflow.com/questions/21970278/uicollectionview-didselectitematindexpath-not-called-when-tapped-on-uitextview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!