【问题标题】:How to detect any Touch in a UIView?如何检测 UIView 中的任何触摸?
【发布时间】:2014-05-08 23:13:27
【问题描述】:

我有这段代码,但方法没有被调用,我该怎么办?我需要委托人吗?

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];

    if ([touch view] == self.view)
    {

    }

}

【问题讨论】:

  • 那么问题是该方法没有被调用,还是if 语句永远不正确?
  • 方法没有被调用:(
  • 当你触摸一个 UIView 时,UIView 类首先接收到touchesBegan,如果 UIView 类没有对触摸做任何事情,那么触摸将被转发到 UIViewController 类。但是如果你有一个手势识别器附加到 UIView,那么手势识别器可能会阻止触摸到达 UIViewController。

标签: ios uigesturerecognizer uiresponder


【解决方案1】:

您在UIView没有使用此代码。

这是 UIResponder 类的委托,UIView 继承自 UIResponder。因此,如果此方法是在 UIView 类中定义而不是在 UIViewController 中定义的,则会调用此方法。

此外,如果它是您的 UIView 中的代码,您不需要检查视图,因为它就是 THAT VIEW。因为如果视图被触及,你就确定它是正确的视图:)

【讨论】:

  • UIViewController 继承自 UIResponder,并接收触摸事件。
  • 不重要,因为是捕获事件的视图。所以在任何情况下,他都应该在下一个响应者处传递事件。但是我不明白为什么他可以直接在视图中实现代码。
  • 嗯,对不起。最好的方法是什么?在 UIImageView 中检测到任何触摸事件?
  • 最好的方法应该是在你的 UIView 中实现它,或者取决于你想要做什么。你把这段代码放在 UIViewController 中了吗?您的视图控制器/视图的结构是什么?并且方法没有被调用或没有进入if语句?
【解决方案2】:

尝试将 userInteractionEnabled = YES 添加到您的 UIView。

或者也许另一个视图正在捕捉事件。

【讨论】:

  • 我有这个 userInteractionEnabled = YES 但不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多