【问题标题】:Handling a touch event across multiple subviews跨多个子视图处理触摸事件
【发布时间】:2014-03-25 13:12:50
【问题描述】:

我是 iOS 开发的新手。我有一个自定义绘制视图,它由覆盖屏幕上目标区域的多个子视图组成。具体来说,这是一个类似于国际象棋的棋盘游戏,我为每个方格使用了一个视图。正方形被创建为 UIView 上的子视图。为此有一个 UIViewController。从我读到的,我必须在我的 UIView 中有 touchesBegan、touchesEnded 等调用来处理这些。但是这些函数都没有被调用。我在基本视图和所有子视图上添加了这些调用。所以——

  1. 如何在 iOS 模拟器中模拟这些触摸事件?鼠标单击不会调用 touchesBegan ,touchesEnded 调用任何视图。

  2. 理想情况下,我想在 UIViewController 中处理这些,因为我想通过一些逻辑来运行触摸。那可能吗?如何实现?

【问题讨论】:

  • 您是在 IB/Storyboard 中还是在代码中设置触摸事件?如果在代码中,你能说明它们是如何被添加的吗?
  • @Stonz2 - 我发现了问题,我必须在视图上启用用户交互。我正在以编程方式设置它。

标签: ios objective-c uiview uiviewcontroller


【解决方案1】:

请参考THIS 它是 Apple 示例代码中的教程,它描述了如何很好地处理触摸。 只需运行示例代码并仔细阅读说明,您就会清楚地了解触控在 iOS 上的工作原理。

【讨论】:

  • 我发现了问题。请看我上面的回答。您指向示例的链接可能对我有用。我会通过它。
【解决方案2】:

当我以编程方式而不是通过情节提要添加视图时,userInteractionEnabled 变量默认设置为 NO。设置完成后,我会在视图中调用 touchesEnabled 调用。

【讨论】:

    【解决方案3】:

    检查一下:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch *touch = [touches anyObject];
        if(![touch.view isKindOfClass:[yourView class]])
        {
        }
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-12
      • 2023-03-28
      • 1970-01-01
      • 2011-07-11
      • 2023-03-21
      • 2016-05-28
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多