取消其他视图的触摸事件

Cancel touch events for other views

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

所以,如果我没理解错的话,你想识别这两个事件,并调用这两个手势的方法,对吧?如果是这样,试试这个代码片段:

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

此方法允许识别多种手势

如果您想限制对不同视图的触摸,您可以根据需要更改 userInteractionEnabled 的 属性。

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