我有两个手势点按并在同一视图上滑动。每当用户尝试滑动视图时,tapGesture都会识别。在这种情况下,我希望忽略tap。怎么做。 下面是代码。 这不是同时识别器的情况,因为不会调用滑动手势。
UITapGestureRecognizer *gest = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(itemSelected:)];
gest.numberOfTapsRequired = 1
[messageView addGestureRecognizer:gest];
UISwipeGestureRecognizer *swipeGest = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(itemSwiped:)];
swipeGest.direction = UISwipeGestureRecognizerDirectionUp ;
[messageView addGestureRecognizer:swipeGest];
答案 0 :(得分:1)
虽然suggested answer很好,但更简单的解决方案可能是要求点击手势使用- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer
等待滑动手势失败。此方法“与另一个手势识别器建立关系,将接收者的转换延迟到UIGestureRecognizerStatePossible
之外”。在您的情况下,代码看起来像:
[gest requireGestureRecognizerToFail:swipeGest];
您可以找到更多信息here。
答案 1 :(得分:0)
在处理程序itemSelected
和itemSwiped
中,请务必检查state
的{{1}}。
可能的状态包括:UIGestureRecognizer
,possible
,began
,changed
,ended
和cancelled
。
您可能正在寻找failed
州。