【问题标题】:How to detect a tap gesture in subviews如何检测子视图中的点击手势
【发布时间】:2012-05-14 14:37:26
【问题描述】:

快速问题:我如何检测点击手势识别器是否在它添加到的视图的子视图中?例如。如果我单击已作为子视图添加到已添加轻击手势识别器的背景的对象(例如正方形),我如何检测它已被轻击?

【问题讨论】:

  • 请明确说明您喜欢做什么?想识别点击子视图?

标签: objective-c ios uiview touch uitapgesturerecognizer


【解决方案1】:

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

一些帮助您入门的代码:

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

要使命中测试正常工作,视图需要将userInteractionEnabled 属性设置为YES。许多视图(例如UILabels)默认设置为NO。所以在上述之前:

self.subviewOfInterest.userInteractionEnabled = YES;

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 该死!这就是我需要的。我的子视图被手势识别器忽略了,现在它可以工作了。谢谢。
    【解决方案3】:

    您可以使用requireGestureRecognizerToFail:来识别子视图的点击请参考this代码

    【讨论】:

      猜你喜欢
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 2019-10-24
      • 1970-01-01
      • 2015-08-25
      相关资源
      最近更新 更多