触摸iOS中的事件传播

时间:2012-10-22 18:19:35

标签: ios cocoa-touch events uiview propagation

我正在寻找原生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。

1 个答案:

答案 0 :(得分:3)

为了避免与父母接触,当您向孩子展示时,您可以这样做:

[parentView setUserInteractionEnabled:FALSE];

完成后反转。我认为这是最简单的方法。

此外,使用手势识别器时,防止/允许触摸传输的好方法是为该手势设置正确的值。像这样:

[gestureRecognizer setDelaysTouchesBegan:TRUE];
[gestureRecognizer setDelaysTouchesEnded:TRUE];
[gestureRecognizer setCancelsTouchesInView:TRUE];

当然,价值取决于您想要达到的目标。

希望这有帮助。

干杯!