我在使用UITapGestureRecognizer时遇到了一些问题。我创建这样说:这个UITapGestureRecognizer为什么不识别水龙头?
self.userInteractionEnabled = YES;
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
tapRecognizer.cancelsTouchesInView = NO;
tapRecognizer.delaysTouchesBegan = YES;
tapRecognizer.delegate = self;
tapRecognizer.numberOfTapsRequired = 1;
tapRecognizer.numberOfTouchesRequired = 1;
[self addGestureRecognizer:tapRecognizer];
在头文件中我还包括贯彻shouldReceiveTouch:
方法,像这样:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return YES;
}
我已经通过类似的问题,并能”无数人看了线程似乎找到了解决办法。我听说,如果认为您要添加的手势识别与userInteractionEnabled
子视图设置为YES,这可能可能与自来水识别干扰,所以我也有这样的:
for(UIView *subview in self.subviews) {
subview.userInteractionEnabled = NO;
}
任何人都知道为什么手势识别器不起作用?
编辑:
这里还有一些细节:
- 我加入了UITapGestureRecognizer到UIView子类。
- 我在子类'
initWithFrame:
方法中添加手势识别器。 - 我已验证手势识别器是通过逐步添加实际添加的代码部分来添加的。
- 包含此视图的视图控制器没有附加任何手势识别器,但确实执行了
touchesBegan
,touchesMoved
和touchesEnded
。但是,根据question,视图控制器实现这些应该不会影响视图的手势识别。
编辑2:
我已验证有接收来自触摸阻断与手势识别器视图中没有其他视图。我也验证过,视图实际上被添加到了包含视图控制器的视图中。这似乎是其他地方的问题。
此视图的其中一个父对象是否附加了手势识别器? –
@BrianShamblen - 视图所在的视图控制器没有附加任何手势识别器,但它实现了'touchesBegan:','touchesMoved:'和'touchesEnded:'。 – pasawaya
你可以尝试将视图的背景颜色设置为红色吗?如果你可以看到红色视图正常,为层次结构中的所有视图设置背景颜色,那么你可以判断视图是否重叠 – vodkhang