0

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

谢谢

4

3 回答 3

1
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
       shouldReceiveTouch:(UITouch *)touch {

    if ([touch.view isKindOfClass:[UIButton class]]) {
        return NO;
    }
    return YES;
}

用这种方法来区分GestureRecognizerButtonActon。

希望这对您有所帮助。

于 2012-11-26T04:17:45.560 回答
0

不确定这是否有帮助

[[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
    }
}
于 2012-11-26T03:11:00.057 回答
0

您可以通过以下两种策略来解决您的问题:-

1)在您需要的视图中添加手势时,请确保它不会添加不需要的视图,在这种情况下是您的UIButton,&;

2)在您处理检测手势情况的方法/委托处,即在实施之前您确保这不是UIButton。

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

祝你有美好的一天。:)

于 2012-11-26T04:00:40.390 回答