如何附加在视图外部发生的点击事件以动画/关闭它

时间:2012-05-04 15:01:25

标签: uiview event-handling

我有一个视图(假设视图B)位于另一个视图的顶部(视图A)。当触摸点击发生在视图B之外时,我想制作一些动画。

到目前为止,我已将Taptouch手势识别器连接到View A.问题是,即使是在视图B上发生的事件(视图A重叠),视图A也会截取点击事件。

UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(animateViewB)];
recognizer.delegate = self;
[self.viewA addGestureRecognizer:recognizer];

如何在点击View B内部时确保点击事件未发送到View A?如果我检查事件相对于视图B的位置,如果我检测到它在里面。如何确保所有事件都转发到View B?

1 个答案:

答案 0 :(得分:0)

即使您正在触摸viewB,viewA正在接收交互的原因是UIImageView本身禁用了用户交互。

如果要拦截UIImageView上的交互,则必须设置:

imageView.userInteractionEnabled = YES;

如果向视图添加手势识别器,则视图将是唯一使用特定识别器的视图。

启用了用户互动的最高级别视图(即顶部的视图)将接收您的触摸或手势。禁用用户交互的视图将不会收到任何触摸或手势事件。

为了更好地理解视图层次结构,您应该阅读:View Programming Guide for iOS