Ios 滑动和平移手势重叠

Ios 滑动和平移手势重叠,ios,gestures,Ios,Gestures,是否可以让某个特定手势失败,以便识别下一个可能的手势 更具体地说,请查看示例代码段: UISwipeGestureRecognizer *swipeLeft = [initialize UISwipeGestureRecognizer... @selector(handleSwipe:)] swipeLeft = UISwipeGestureRecognizerDirectionLeft; swipeLeft.delegate = self; UIPanGestureRecognizer

是否可以让某个特定手势失败,以便识别下一个可能的手势

更具体地说,请查看示例代码段:

UISwipeGestureRecognizer *swipeLeft = [initialize UISwipeGestureRecognizer... @selector(handleSwipe:)]

swipeLeft = UISwipeGestureRecognizerDirectionLeft;

swipeLeft.delegate = self;

UIPanGestureRecognizer *pan = [initialize UIPanGestureRecognizer... @selector(handlePan:)]

pan.delegate = self;

[pan requireGestureRecognizerToFail:swipeLeft];
上面的代码说明,如果设备无法识别向左滑动,将使用平移手势处理程序

因此,我的问题是:是否可以根据在HandleSweep上检查的一些标准,让swipeLeft故意失败(在被设备识别为“左扫”触摸后),而让平移手势处理触摸输入


谢谢。

在此处查看
UIgestureRecognitizerDelegate
协议:

具体来说

手势识别器:应与手势识别器同时识别:


方法可能有用。如果您只需通过此方法返回
YES
,两种手势都可以同时识别,因此您可以正确响应这两种手势。

假设您为平移手势实现了其他处理程序,您就不能执行以下操作:

-(void)handleSwipe:(id)sender {

    if //criteria is met to ignore left swipe
    {
        [self handlePan:self];   
    }
}

-(void)handlePan:(id)sender {

    // handle pan gesture here

}

这可能会起作用,但handlePan(其自身的ToucheSBegind、Moved、End实现对于noob来说有点复杂)实际上位于视图控制器上使用的另一个库中。谢谢。同时识别手势并不能给我想要的行为。向左滑动可以将UIView从一个位置移动到另一个位置,平移手势也可以移动UIView,但这取决于您的触摸平移和速度。谢谢。听起来平移识别器可以让你用触摸移动视图,但是如果检测到滑动,你可以设置一个标志,告诉平移停止工作,因为滑动行为将接管。你认为这可能完成你想要做的事情吗?这是一个好主意,也是我想要实现的,有没有一个更简单的实现,而不需要编写或覆盖你自己的touchBegind、Moved、End方法来标记并让当前手势停止并传递到下一个手势行为?谢谢。是的,我建议保留您的手势方法,从我提到的委托方法返回
Yes
,然后拥有一个内部类属性(我认为a
BOOL
应该足够了),比如
didSwipe
。在刷卡识别器方法的开头,将其设置为
YES
-这仅在识别刷卡时发生。在pan方法中,将整个过程封装在if语句中:
if(!self.didSwipe){…}
,因此只有在没有刷卡或还没有刷卡的情况下才会执行此部分。您可能还需要注意在某个时候重置该变量。谢谢您的建议,我认为解决方案会起作用。我将实现它,并看看我是否能获得所需的行为。