检测平移手势结束

Dan*_*nly 49 objective-c touch uigesturerecognizer

我有一个视图,我在这个视图中应用了一个UIPanGestureRecogniser:

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

我可以很好地检测和处理手势.但是,一旦手势结束,我希望启动另一种方法.

我知道有两种方法可以进行这种检测.touchesEndedtouchesCancelled然而,我发现,touchesCancelled获取,一旦触摸成为一种姿态,即我将我的手指足以保证手势调用,并呼吁touchesEnded很少,如果有的话,被调用.

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

Jha*_*iya 135

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

请查看以下代码.

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

来自Apple文档

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

阅读更多


Was*_*hah 11

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

请查看以下代码.

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


Ray*_*Tso 6

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

斯威夫特3:

func panGesture(recognizer: UIPanGestureRecognizer) {
    if recognizer.state == .ended {
        // Do what you want
    }
}
Run Code Online (Sandbox Code Playgroud)