Quick question: how do i detect if a tap gesture recognizer is within a subview of the view it is added to? Eg. if i click on an object such as a square that has been added as a subview to a background which a tap gesture recognizer has been added to, how do I detect that it has been tapped?
Ios – How to detect a tap gesture in subviews
iosobjective ctouchuitapgesturerecognizeruiview
Related Topic
- Ios – UITapGestureRecognizer tap on self.view but ignore subviews
- Ios – ScrollView gesture recognizer eating all touch events
- Ios – Long press gesture on UICollectionViewCell
- Css – A questions about coding the CSS layout for a website
- Sql – Exec sproc from Powershell
- Ios – Emulating aspect-fit behaviour using AutoLayout constraints in Xcode 6
Best Answer
You can grab the point of the tap off the gesture recognizer when your handler method is called respective to any view you wish using
-locationInView:
. Then, use the following method on UIView:- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
to get a reference to the actual sub view that was tapped remembering that the point you pass in is in the same coordinate space as the view.Some code to get you started:
For hit testing to work the view needs to have the
userInteractionEnabled
property set toYES
. Many views, such asUILabel
s have this set toNO
by default. So prior to the above: