我正在寻找原生ios开发中非常基本问题的解决方案。
我有这样的设置 UIViewController(全屏)----> UIView-Parent(全屏)----> UIView-Child(全屏)
UIView-Child订阅了一个事件UITapGestureRecognizer 和UIView-Parent订阅了event touchesBegan:withEvent
当在屏幕上的任何位置点击时,会有一个事件发送到UIView-Child以及UIView-Parent,因为它们都会收听不同的事件。
但我需要的是所有事件都在UIView-Child本身停止,并且不会传播到UIView-Parent。
一种方法是使用空函数在UIView-Child上实现所有事件侦听器,但我确信应该有更好的方法。有人可以帮助我。
我的问题还有第二部分 如果UIView-Parent也开始识别UITapGestureRecognizer事件,那么当UIView-Child实现它时,它不会传播到UIView-Parent。有没有办法,如果需要,我可以让这个传播从UIView-Child发生到UIView-Parent。
答案 0 :(得分:3)
为了避免与父母接触,当您向孩子展示时,您可以这样做:
[parentView setUserInteractionEnabled:FALSE];
完成后反转。我认为这是最简单的方法。
此外,使用手势识别器时,防止/允许触摸传输的好方法是为该手势设置正确的值。像这样:
[gestureRecognizer setDelaysTouchesBegan:TRUE];
[gestureRecognizer setDelaysTouchesEnded:TRUE];
[gestureRecognizer setCancelsTouchesInView:TRUE];
当然,价值取决于您想要达到的目标。
希望这有帮助。
干杯!