简体   繁体   中英

UICollectionView didSelectItemAtIndexPath not called when tapped on UITextView

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?

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 .

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

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.

Select UITextView , in that specific case UICollectionViewCell , and switch to attribute inspector. The uncheck User interaction enabled and it should work fine.

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.

就这样做

textview.isUserInteractionEnabled = false 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM