在同一视图上点按并滑动手势

时间:2017-12-15 15:24:46

标签: ios uitapgesturerecognizer uiswipegesturerecognizer

我有两个手势点按并在同一视图上滑动。每当用户尝试滑动视图时,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];

2 个答案:

答案 0 :(得分:1)

虽然suggested answer很好,但更简单的解决方案可能是要求点击手势使用- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer等待滑动手势失败。此方法“与另一个手势识别器建立关系,将接收者的转换延迟到UIGestureRecognizerStatePossible之外”。在您的情况下,代码看起来像:

[gest requireGestureRecognizerToFail:swipeGest];

您可以找到更多信息here

答案 1 :(得分:0)

在处理程序itemSelecteditemSwiped中,请务必检查state的{​​{1}}。

可能的状态包括:UIGestureRecognizerpossiblebeganchangedendedcancelled

您可能正在寻找failed州。