1

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

到目前为止,我已将 taptouch 手势识别器附加到视图 A。问题是视图 A 正在拦截点击事件,即使对于发生在视图 B 上的事件(当它与视图 A 重叠时)也是如此。

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

在视图 B 中单击时,我应该如何确保不会将点击事件发送到视图 A?如果我检查事件相对于视图 B 的位置并且我检测到它在其中。如何确保所有事件都转发到视图 B?

4

1 回答 1

0

即使您正在触摸 viewB,您的 viewA 仍在进行交互的原因是 UIImageViews 本机禁用了用户交互。

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

imageView.userInteractionEnabled = YES;

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

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

为了更好地理解视图层次结构,您应该阅读:iOS 视图编程指南

于 2012-05-04T21:34:26.083 回答