14

快速提问:我如何检测轻击手势识别器是否在它添加到的视图的子视图中?例如。如果我单击已作为子视图添加到已添加轻击手势识别器的背景的对象(例如正方形),我如何检测到它已被轻击?

4

3 回答 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. 许多视图,例如UILabels 都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 回答