检测平移手势结束
我有一个观点,我应用UIPanGestureRecogniser到这个视图:
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAnim:)]; [sliderView addGestureRecognizer:panGesture]; [panGesture release];
我可以检测和处理手势就好了。 不过,一旦手势结束,我希望启动另一种方法。
我知道有两种方法可以进行这种检测。 然而,触摸已经touchesEnded
并touchesCancelled
,我发现只要触摸变成一个手势,触摸touchesCancelled
就会被调用,即我将手指移动到足以保证一个手势调用,并很less接触到已touchesEnded
,如果有的话,被调用。
我希望能够平移左/右,然后启动手势结尾的另一个函数调用。 我该怎么做呢?
可以通过使用UIGestureRecognizerStateEnded
检查它的状态来检测平移手势结束事件。
检查下面的代码。
-(void) panAnim:(UIPanGestureRecognizer*) gestureRecognizer { if(gestureRecognizer.state == UIGestureRecognizerStateEnded) { //All fingers are lifted. } }
从苹果文档
平移手势是连续的。 它开始(UIGestureRecognizerStateBegan)当允许的最小数量的手指(minimumNumberOfTouches)足够的移动被认为是平底锅。 当手指移动时,它会改变(UIGestureRecognizerStateChanged),同时至less按下最小数量的手指。 当所有手指抬起时,它结束(UIGestureRecognizerStateEnded)。
阅读更多
平移手势结束事件可以通过使用UIGestureRecognizerStateEnded
或UIGestureRecognizerStateCancelled
或UIGestureRecognizerStateFailed
检查其状态来检测
检查下面的代码。
-(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 } }