objective-c - 如何检测 subview 中的点击手势

标签 objective-c ios uiview touch uitapgesturerecognizer

小问题:如何检测点击手势识别器是否在它所添加到的 View 的 subview 内?例如。如果我单击一个对象,例如已作为 subview 添加到已添加点击手势识别器的背景的正方形,我如何检测它已被点击?

最佳答案

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

一些让你开始的代码:

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

要使 HitTest 正常工作, View 需要将 userInteractionEnabled 属性设置为 YES。许多 View ,例如 UILabels 默认将此设置为 NO。所以在上述之前:

self.subviewOfInterest.userInteractionEnabled = YES;

关于objective-c - 如何检测 subview 中的点击手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10459184/

相关文章:

swift - 错误 : Execution was interrupted, 原因 : signal SIGABRT. 在 swift playgrounds

ios - 在同一个类中调用UIButton AddTarget

Java vs Objective-C : Exception, 到达最终 block

iphone - 带操作表的iPhone DatePicker

ios - Objective-C @available 守卫与更多条件

ios - Swift 中枚举的默认值

uiview - UIView 标签属性的最大值

ios - 收到通知时播放声音在开发中有效但在生产中无效

ios - 如果我更改设备语言,键盘语言会发生变化

html - 如何使用 Xcode 动态修改 HTML?