如何在子视图中检测轻击手势
快速的问题:我如何检测点击手势识别器是否被添加到视图的子视图内? 例如。 如果我点击一个对象,例如已添加为子视图的方块,并添加了轻拍手势识别器,那么如何检测到它已被轻敲?
当您的处理程序方法分别被调用时,您可以使用-locationInView:
获取点击手势识别器的点。 然后,在UIView上使用下面的方法: - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
来获取被点击的实际子视图的引用记住你传入的点是相同的坐标空间视图。
一些代码让你开始:
CGPoint point = [tapGestureRecognizer locationInView:parentView]; UIView *tappedView = [parentView hitTest:point withEvent:nil];
为了实现命中testing,视图需要将userInteractionEnabled
属性设置为YES
。 许多视图,例如UILabel
,默认情况下这个设置为NO
。 所以在上面之前:
self.subviewOfInterest.userInteractionEnabled = YES;
也许你应该设置为: subviews.userInteractionEnabled = YES; 祝你好运!
你可以使用requireGestureRecognizerToFail:
来识别子视图上的点击请参考这个代码