ios - 避免将触摸事件传递给后面的背景视图
问题描述
看法
- 堆栈视图(垂直)
-
- 紫色(视图)
-
- 绿色(视图)
-
- 橙色(视图)
View 有一个点击手势识别器。它打印“this”加上一个随机整数。
如果我点击紫色、绿色或橙色,它仍然会打印“this”。
如何禁用彩色框上的点击?我尝试关闭框上的“启用用户交互”设置。
解决方案
因为堆栈视图是 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
推荐阅读
- python - 无法加载库“/usr/local/lib/postgresql/rtpostgis-2.4.so”
- linux - Mininet Ping 问题
- c# - SQL 超时执行错误 [我在高容量请求中遇到超时执行错误]
- xml - Xpath 获取位于具有特定属性的两个元素之间的元素
- jquery - 使用 lodash 通过 ajax 调用调用函数的节流
- ios - 使用 YTPlayerView 无法在 iOS 中播放 Youtube 视频
- nuxeo - 为什么 nuxeo 要求注册实例?
- scala - 过滤案例类对象属性的最佳实践
- java - 尝试编辑数据集时 eclipse 冻结并且没有响应
- c# - 数组 c# 中的子字符串 (Unity)