我刚刚在我的视图顶部添加了一个带有UIPanGestureRecognizer的UIView。
该视图有几个 UIButtons,它们响应 touchUpInside 事件。
奇怪的是,自从我带来了UIPanGestureRecognizer以来,在平移时,如果UIButton就在"平移视图"的正下方,按钮就会触发,这不是我想要的。当然,我可以制作一个用于"平移"的 BOOL 标志,这样按钮就不会触发,但在我看来,这就像糟糕的工程,肯定是我缺少的东西。我猜在第一次触摸之后,两个视图都会拦截事件。
有可能克服这一点吗?
谢谢
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UIButton class]]) {
return NO;
}
return YES;
}
使用此方法区分GestureRecognizer
和Button
阿克顿。
希望这对你有帮助。
不确定这是否有帮助
[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanned:)];
- (void)handlePanned:(UIPanGestureRecognizer*)thePanner{
if (thePanner.state == UIGestureRecognizerStateChanged ){
//disable button
}else if (thePanner.state == UIGestureRecognizerStateEnded) {
//enable button
}else if ( thePanner.state == UIGestureRecognizerStateFailed ){
//enable button
}
}
您可以通过以下两种策略来解决问题:-
1)在所需视图中添加手势时,请确保它不会添加不需要的视图,在本例中是您的 UIButton,&;
2)在处理检测手势的情况的方法/委托中,即手势做什么,在实现之前,您确保这不是 UIButton。
如果您坚持,我将尝试示例代码。
祝你有美好的一天。:)