2012-05-05 35 views
14

快速问题:如何检测轻击手势识别器是否在视图的子视图内?例如。如果我点击一个对象,例如添加了作为子视图的方块,并添加了轻拍手势识别器,我如何检测到它已被轻敲?如何在子视图中检测轻击手势

+0

请说清楚你喜欢做什么?想要识别点击子视图? –

回答

37

当您使用-locationInView:的任何视图分别调用处理程序方法时,您可以抓取手势识别器的点击点。然后,在UIView上使用以下方法:- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event以获取对被点击的实际子视图的引用,并记住您传入的点与视图在同一坐标空间中。

一些代码来让你开始:

CGPoint point = [tapGestureRecognizer locationInView:parentView]; 
UIView *tappedView = [parentView hitTest:point withEvent:nil]; 

对于命中测试工作的看法需要有userInteractionEnabled属性设置为YES。许多视图(如UILabel)默认情况下都设置为NO。上述所以之前:

self.subviewOfInterest.userInteractionEnabled = YES; 
+0

谢谢,这有助于很多! – Fitzy

+0

谢谢@Brandom –

0

可以使用requireGestureRecognizerToFail:识别子视图上水龙头,请参阅this代码

13

也许你应该设置为: subviews.userInteractionEnabled = YES; 祝你好运!

+0

该死!这是我需要的。我的子视图被gestureRecognizer忽略,现在它工作。谢谢。 – surfrider

相关问题