检测平移手势结束

我有一个观点,我应用UIPanGestureRecogniser到这个视图:

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

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

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

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

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

检查下面的代码。

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

从苹果文档

平移手势是连续的。 它开始(UIGestureRecognizerStateBegan)当允许的最小数量的手指(minimumNumberOfTouches)足够的移动被认为是平底锅。 当手指移动时,它会改变(UIGestureRecognizerStateChanged),同时至less按下最小数量的手指。 当所有手指抬起时,它结束(UIGestureRecognizerStateEnded)。

阅读更多

平移手势结束事件可以通过使用UIGestureRecognizerStateEndedUIGestureRecognizerStateCancelledUIGestureRecognizerStateFailed检查其状态来检测

检查下面的代码。

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

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

Swift 3:

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