2011-06-24 65 views
43

我有一个观点,我应用了UIPanGestureRecogniser这一观点:检测平移手势结束

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAnim:)]; 
[sliderView addGestureRecognizer:panGesture]; 
[panGesture release]; 

我可以检测并处理姿势就好了。不过,我希望在手势结束后启动另一种方法。

我知道有两种方法可以进行这种检测。然而,我发现touchesCancelled只要触摸变成一个手势就会被调用,即我将我的手指移动到足以保证手势调用,并且很少(如果有的话)被调用。

我希望能够平移左/右,然后启动手势结尾时的另一个函数调用。我该怎么做呢?

回答

114

可以通过检查其状态UIGestureRecognizerStateEnded来检测平移手势结束事件。

请检查下面的代码。

-(void) panAnim:(UIPanGestureRecognizer*) gestureRecognizer 
{ 
    if(gestureRecognizer.state == UIGestureRecognizerStateEnded) 
    { 
     //All fingers are lifted. 
    } 
} 

从苹果文档

平移手势是连续的。 开始(UIGestureRecognizerStateBegan) 当允许的最小数量的手指 (minimumNumberOfTouches)有 移动到足以被视为平底锅。 (UIGestureRecognizerStateChanged)当 手指移动,而至少 手指的最小数量被按下 下。当 所有手指被抬起时,它结束 (UIGestureRecognizerStateEnded)。

Read more

+0

队友的欢呼声!正是我需要的! –

+0

@Daniel Hanly:很高兴知道它有助于你:) – Jhaliya

11

潘手势结束事件可以通过与UIGestureRecognizerStateEndedUIGestureRecognizerStateCancelledUIGestureRecognizerStateFailed

检查用下面的代码检查它的状态进行检测。

-(void) panGesture:(UIPanGestureRecognizer*) gestureRecognizer 
    { 
    if(gestureRecognizer.state == UIGestureRecognizerStateEnded || gestureRecognizer.state == UIGestureRecognizerStateFailed || gestureRecognizer.state == UIGestureRecognizerStateCancelled) 
      { 
       //code what you want. 
      } 
    } 
5

以上答案都是正确的,这只是Swift的更新版本。

斯威夫特3:

func panGesture(recognizer: UIPanGestureRecognizer) { 
    if recognizer.state == .ended { 
     // Do what you want 
    } 
}