快速提问:我如何检测轻击手势识别器是否在它添加到的视图的子视图中?例如。如果我单击已作为子视图添加到已添加轻击手势识别器的背景的对象(例如正方形),我如何检测到它已被轻击?
问问题
26211 次
3 回答
41
当针对您希望使用的任何视图调用处理程序方法时,您可以从手势识别器中获取点击点-locationInView:
。然后,在 UIView 上使用以下方法:- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
获取对被点击的实际子视图的引用,记住您传入的点与视图在同一坐标空间中。
一些可以帮助您入门的代码:
CGPoint point = [tapGestureRecognizer locationInView:parentView];
UIView *tappedView = [parentView hitTest:point withEvent:nil];
要使命中测试正常工作,视图需要将userInteractionEnabled
属性设置为YES
. 许多视图,例如UILabel
s 都NO
默认设置为这个。所以在上述之前:
self.subviewOfInterest.userInteractionEnabled = YES;
于 2012-05-05T05:41:21.883 回答
15
也许你应该设置为: subviews.userInteractionEnabled = YES; 祝你好运!
于 2012-05-09T04:20:59.407 回答
0
您可以使用requireGestureRecognizerToFail:
识别子视图上的点击请参考此代码
于 2012-05-05T05:44:21.643 回答