UIPanGestureRecognizer:为什么每次都没有StateEnded

时间:2014-07-29 13:48:22

标签: ios objective-c ios7

我正在使用UIPanGestureRecognizer来检测和计算手指的移动。我的问题是触发了以下事件序列:

StateBegan StateChanged StateChanged StateChanged StateEnded

但有时只有这个序列用于相同的用户交互

StateChanged StateChanged StateChanged

- (void)viewDidLoad
{
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panHandler:)];
panRecognizer.minimumNumberOfTouches = 1;
panRecognizer.maximumNumberOfTouches = 1;
[panRecognizer setDelaysTouchesBegan:NO];
[panRecognizer setDelaysTouchesEnded:NO];
[self.view addGestureRecognizer:panRecognizer];
}

-(void)panHandler:(UIPanGestureRecognizer *)recognizer {
   //gesture hanlding here
   if(recognizer.state == UIGestureRecognizerStateEnded){
      // Do smth here
   }
}

1 个答案:

答案 0 :(得分:1)

因为它可以取消。 来自文档:

Possible ----> Began ----> [Changed] ----> Cancelled
Possible ----> Began ----> [Changed] ----> Ended

https://developer.apple.com/library/ios/documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40009279-CH1-DontLinkElementID_2