避免将触摸事件传递给后面的背景视图

Avoid Passing Touch Event to the Background View Behind

查看

View 有一个点击手势识别器。它打印“this”加上一个随机整数。

如果我点击紫色、绿色或橙色,它仍会打印“this”。

如何禁止点击彩色框?我尝试关闭盒子上的 'User Interaction Enabled' 设置。

因为堆栈视图是 View 的子视图,而不是添加到顶部(就像呈现的视图控制器),所以它会像您正在经历的那样接收触摸事件。您的视图控制器需要采用 UIGestureRecognizerDelegate 协议,然后您需要将手势的委托设置为视图控制器(很可能您只需将其设置为“self”),然后实现以下功能:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
    //the below will return false if the touch's view is not the gesture recognizer's view
    return touch.view == gestureRecognizer.view
}

代码示例引用自:UITapGestureRecognizer tap on self.view but ignore subviews