扫码关注官方订阅号
父视图的touchesBegan就是会被调到,因为确实到它触发的条件了。
更新:这里说的触发条件是指:UIView中touchesXXX一系列的默认行为是把触摸事件向上传递。你的subview没有override这个默认行为,父视图自然会收到子视图传上来的消息,从而打印log。
所以下面删除线的做法又不太好了,不是你要的。你可以把subview的touches系列全部override,什么都不做就可以使父视图的touchesbegan不再被调用。
参考资料:UIResponder Class Reference touchesBegan:withEvent:
要么父视图的点击事件你也用tapGestureRecognizer实现,就可以把touchesXXX一系列的全去掉不用自己管理了,眼不见心不烦。
不然你就在父视图的touchesBegan里判断触摸点的位置是不是在subview里,是就不管,不是就"你点到我了"。
关于@loveuqian说的hit testing的一篇收藏http://smnh.me/hit-testing-in-ios/
应该不是子视图响应的。UIView默认用户交互开启,又没有添加事件,所以touch事件穿透了由父视图响应。给子视图添加事件试试。
你把UIview与用户的交互打开了,看下行不行
关键词应该是 hitTest
重写 hitTest
hitTest
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
父视图的touchesBegan就是会被调到,因为确实到它触发的条件了。
更新:这里说的触发条件是指:
UIView中touchesXXX一系列的默认行为是把触摸事件向上传递。你的subview没有override这个默认行为,父视图自然会收到子视图传上来的消息,从而打印log。
所以下面删除线的做法又不太好了,不是你要的。你可以把subview的touches系列全部override,什么都不做就可以使父视图的touchesbegan不再被调用。
参考资料:UIResponder Class Reference touchesBegan:withEvent:
要么父视图的点击事件你也用tapGestureRecognizer实现,就可以把touchesXXX一系列的全去掉不用自己管理了,眼不见心不烦。
不然你就在父视图的touchesBegan里判断触摸点的位置是不是在subview里,是就不管,不是就"你点到我了"。关于@loveuqian说的hit testing的一篇收藏http://smnh.me/hit-testing-in-ios/
应该不是子视图响应的。UIView默认用户交互开启,又没有添加事件,所以touch事件穿透了由父视图响应。给子视图添加事件试试。
你把UIview与用户的交互打开了,看下行不行
关键词应该是 hitTest
重写
hitTest