UIGestureRecognizerStateBegan在iOS 6中

问题描述:

给予在此先感谢调用两次,我想和大家分享的UILongPressGestureRecognizer的奇怪行为。UIGestureRecognizerStateBegan在iOS 6中

UIView *v = [UIView alloc] initWithFrame:CGRectMake(0,0,20,20)]; 
UILongPressGestureRecognizer *longpressGesture1 = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 
[v addGestureRecognizer:longpressGesture1]; 

并且这里是委托来处理手势识别器。

-(IBAction)tapped:(UILongPressGestureRecognizer *) gesture 

{ 
    switch ([gesture state]) { 
     case UIGestureRecognizerStateBegan: 
     { 

      NSLog(@"Long Tap detacted."); 

     } 
      break; 
     case UIGestureRecognizerStateChanged: 
     { 
      NSLog(@"UIGestureRecognizerStateChanged"); 


     } 
      break; 
     case UIGestureRecognizerStateEnded: 
     { 
      NSLog(@"Long Tap ended."); 

     } 
      break; 

    } 

} 

被正常使用按预期在IOS 4和5,但与视网膜显示IOS 6这段代码时,我们执行长抽头,UIGestureRecognizerStateBegan被调用两次导致应用程序的单个长抽头崩溃。 非常欢迎任何帮助。

+0

请参阅http://stackoverflow.com/a/3320351/792677随意提供和接受与固定的代码的答案。 – 2013-03-12 14:09:10

UILongPressGestureRecognizer是一个连续事件识别。你必须看看状态,看看这是事件的开始,中间还是结束,并采取相应的行动。

它调用两次,因为你按下,松开手指。

首先调用说明你有检测即UIGestureRecognizerStateBegan 第二个电话的长按则说明你有那个水龙头即结束UIGestureRecognizerStateBegan

有自来水

  1. UIGestureRecognizerStateBegan的三个态
  2. UIGestureRecognizerStateChanged
  3. UIGestureRecognizerStateEnded

如果你拖动手指,然后它会被称为多的时间,这将表明,在其状态的一些变化。

按照UILongPressGestureRecognizer Class Reference更多

+0

不,我没有按下并移开手指。它发生在同一个事件即压。这就是为什么它工作的iOS4和iOS5的但不是在iOS6的 – 2013-03-12 14:18:53

+0

当你按下手指那么它表明一个事件正在发生,完成你长按自来水 – Rajneesh071 2013-03-12 14:28:15

+0

其指示结束后我还没有达到精丝锥。我仍然持有很长的水龙头。 – 2013-03-13 05:40:33