如何在子视图中检测点按手势

时间:2012-05-05 05:34:27

标签: objective-c ios uiview touch uitapgesturerecognizer

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

3 个答案:

答案 0 :(得分:38)

当使用-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;

答案 1 :(得分:14)

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

答案 2 :(得分:0)

您可以使用 requireGestureRecognizerToFail: 来识别点按子视图,请参阅this代码