objective-c - 检测平移手势结束

我有一个 View ,我将 UIPanGestureRecogniser 应用于该 View :

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

我可以很好地检测和处理手势。但是,我希望在手势结束后启动另一个方法。

我知道有两种方法可以进行这种检测。 touchesEndedtouchesCancelled 但是,我发现 touchesCancelled 一旦触摸变成手势即被调用,即我移动手指足以保证手势调用和 touchesEnded 很少(如果有的话)被调用。

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

最佳答案

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

检查下面的代码。

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

来自 Apple 文档

A panning gesture is continuous. It begins (UIGestureRecognizerStateBegan) when the minimum number of fingers allowed (minimumNumberOfTouches) has moved enough to be considered a pan. It changes (UIGestureRecognizerStateChanged) when a finger moves while at least the minimum number of fingers are pressed down. It ends (UIGestureRecognizerStateEnded) when all fingers are lifted.

Read more about UIPanGestureRecognizer

https://stackoverflow.com/questions/6467638/

相关文章:

objective-c - Interface Builder 中的 IBOutletCollect

ios - MKMapView MKPointAnnotation 点击​​事件

objective-c - 奇怪的错误 NSAssert

ios - 如何从 CGPoint 和 CGSize 创建 CGRect?

iphone - 如何删除应用程序指定目录中的所有文件?

ios - 字符串的静态 NSArray - 如何/在哪里初始化 View Controller

objective-c - iOS:如何将 UIViewAnimationCurve 转换为 UIV

objective-c - 分组的 UITableView 在底部有 20px 的额外填充

objective-c - 有没有一种简单的方法可以将 ISO8601 时间戳转换为格式化的 NSD

ios - 使用自动布局,如何根据图像使 UIImageView 的大小动态变化?