2013-08-28 90 views
2

是否可以让特定手势失败,以便识别下一个可能的手势?滑动和平移手势重叠

至更具体地,看样品片段:

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

swipeLeft = UISwipeGestureRecognizerDirectionLeft; 

swipeLeft.delegate = self; 

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

pan.delegate = self; 

[pan requireGestureRecognizerToFail:swipeLeft]; 

上述代码指出,如果向左滑动不被装置识别,平移手势处理机将被使用。

所以我的问题:是否有可能让swipeLeft根据handleSwipe上检查的某些条件故意(在被设备识别为向左轻扫后识别)失败,并让平移手势处理触摸输入?

谢谢。

回答

11

退房这里UIGestureRecognizerDelegate协议:

https://developer.apple.com/library/ios/documentation/uikit/reference/UIGestureRecognizerDelegate_Protocol/Reference/Reference.html

具体地说,

gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

方法可能是有用的。如果您只需从该方法中返回YES,则可以同时识别两个手势,因此您可以正确响应这两个手势。

+0

同时识别手势不给我,我瞄准所需的行为。向左滑动应该将UIView从一个位置移动到另一个位置,平移手势也会移动它,但是会根据您的触摸平移和速度进行移动。谢谢。 – rgb

+0

听起来像平移识别器可以让你用触摸移动视图,但是如果检测到滑动,你可以设置一个标志,告诉平底锅停止工作,因为滑动行为将接管。你认为这可能会完成你想要做的事情吗? – Eric

+0

这是一个伟大的想法,这是我想要实现的,是否有一个更简单的实现,无需编写或覆盖自己的touchesBegan,Moved,Ended方法来标记并让当前手势停止并传递到下一个手势行为?谢谢。 – rgb

0

假设你有一个泛手势来实现一些其他处理程序,你就不能这样做:

-(void)handleSwipe:(id)sender { 

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

-(void)handlePan:(id)sender { 

    // handle pan gesture here 

} 
+0

这可能会工作,但handlePan(带有其自己的touchesBegan,Moved,Ended的实现,这对于noob来说有点复杂)实际上是在视图控制器上使用的不同库中。谢谢。 – rgb