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

Fit*_*tzy 14 objective-c touch uiview ios uitapgesturerecognizer

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

小智 39

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

一些代码可以帮助您入门:

CGPoint point = [tapGestureRecognizer locationInView:parentView];
UIView *tappedView = [parentView hitTest:point withEvent:nil];
Run Code Online (Sandbox Code Playgroud)

要使命中测试起作用,视图需要将userInteractionEnabled属性设置为YES.许多视图,例如UILabels NO默认设置为.所以在上述之前:

self.subviewOfInterest.userInteractionEnabled = YES;
Run Code Online (Sandbox Code Playgroud)


lu *_*uan 14

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