【问题标题】:Cancel touch events for other views取消其他视图的触摸事件
【发布时间】:2019-03-08 13:14:22
【问题描述】:

我有一个UIViewsubclass,它在camera previewAR,但不是ARKit)之上显示一些内容。在这个视图中,我使用touchesBegantouchesEnded 来检测用户是否按下了显示的对象。现在我在UINavigationController 内的controller 中有这个视图embedded,并且这个NavigationController 启用了在点击时显示/隐藏栏。我想这样做,如果我检测到对ARView 内的对象的点击,那么我可以执行一些操作,但是NavigationController 不会接收到触摸,因此只有当我点击背景时,条才会隐藏。在这种情况下,如何进一步阻止发送触摸事件?

【问题讨论】:

    标签: ios swift uikit touches


    【解决方案1】:

    所以,如果我对您的理解正确,您想识别这两个事件,并调用这两个手势的方法,对吗?如果是这样,试试这个代码sn-p:

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }
    

    此方法允许识别多种手势

    【讨论】:

    • 并不总是这样。现在它已经以这种方式工作了 - 我在我的子视图中检测到 touchesEnded 并且导航控制器上的 Bars 都隐藏了。如果我的子视图触摸位于子视图的特殊位置,我希望能够以某种方式阻止这些条隐藏。我没有实现 NavigationController 的触摸,这些是由 SDK 完成的,我只是在情节提要中选择了一些选项。总之,我希望能够将触摸限制在我的子视图中,但并非总是如此——只有在检测到触摸后我才决定这样做。另外我不使用 GestureRecognizers,只是 touchesBegan 和 touchesEnded。
    • 实际上我认为我可以重新设计我的代码以使用手势识别器,然后这可能会起作用。谢谢。
    【解决方案2】:

    如果您希望限制对不同视图的触摸,您可以根据您喜欢的每个条件更改userInteractionEnabled的属性。

    当此属性设置为 false 时,将不会接收所选视图的触摸事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      相关资源
      最近更新 更多