UIButton在其上响应UIPanGestureRecognizer



我刚刚在我的视图顶部添加了一个带有UIPanGestureRecognizer的UIView。
该视图有几个 UIButtons,它们响应 touchUpInside 事件。
奇怪的是,自从我带来了UIPanGestureRecognizer以来,在平移时,如果UIButton就在"平移视图"的正下方,按钮就会触发,这不是我想要的。当然,我可以制作一个用于"平移"的 BOOL 标志,这样按钮就不会触发,但在我看来,这就像糟糕的工程,肯定是我缺少的东西。我猜在第一次触摸之后,两个视图都会拦截事件。
有可能克服这一点吗?

谢谢

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
       shouldReceiveTouch:(UITouch *)touch {
    if ([touch.view isKindOfClass:[UIButton class]]) {
        return NO;
    }
    return YES;
}

使用此方法区分GestureRecognizerButton阿克顿。

希望这对你有帮助。

不确定这是否有帮助

[[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。

如果您坚持,我将尝试示例代码。

祝你有美好的一天。:)

最新更新