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
.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With