检查哪个视图发送gestureRecognizer
Posted
技术标签:
【中文标题】检查哪个视图发送gestureRecognizer【英文标题】:Check which view sends gestureRecognizer 【发布时间】:2014-10-16 17:56:14 【问题描述】:这就是我想做的事情
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
if (touch.view != self.myView)
NSLog(@"we went with no");
//don't let anything that's not myView fire the gesture recognizer
return NO;
NSLog(@"we went with yes");
return YES;
问题是代码总是选择"we went with no"
的路径,无论我实际点击哪里。如何修复我的 if 检查?
【问题讨论】:
touch.view
是触摸起源的视图,可能不是当前视图。考虑到这一点,touch.view
可以返回self.myView
的子视图吗?您是否尝试过检查 touch.view
返回的内容?如果是子视图,试试isDescendantOfView:
【参考方案1】:
如果您在特定视图之外点击时发现手势识别器动作正在触发,则应仔细检查您是否正确添加了手势识别器。
[self.myView addGestureRecognizer:[[UIGestureRecognizer alloc] initWithTarget:self action:@selector(someAction:)]];
如果您仍然遇到不正确的动作触发,您可以检查触摸位置。
if (CGRectContainsPoint(self.myView.bounds, [gesture locationInView:self.myView]))
【讨论】:
以上是关于检查哪个视图发送gestureRecognizer的主要内容,如果未能解决你的问题,请参考以下文章
xcode - pageviewcontroller 覆盖gestureRecognizers
您可以将相同类型的 GestureRecognizer 添加到一个视图中吗?
是否可以将 GestureRecognizer 添加到自定义 UIView 子视图中的标签
Swift 将 GestureRecognizer 添加到 UIStackView 之上的 View