2010-07-26 73 views
0

所以我已经实现了1指长按手势识别器,但识别器似乎总是缺少UIGestureRecognizerStateBegan状态...如果我长时间按住w/o移动手指并抬起,我会得到StateEnded调试消息。 如果我长按并移动手指然后抬起,我会得到StateChanged和StateEnded调试消息。 但我从来没有见过StateBegan。UILongPressGestureRecognizer缺少UIGestureRecognizerStateBegan状态!

UIPanGestureRecognizer没有这个问题 - Pan从开始 - >改变 - >结束获取所有正确的手势状态。

- (void)handleLongPress:(UILongPressGestureRecognizer *)recognizer { 
    CGPoint location = [recognizer locationInView:self]; 

    switch (recognizer.state) { 
     case UIGestureRecognizerStateBegan: 
      NSLog(@"!!!!handleLongPress: StateBegan !!!!!"); 
      break; 
     case UIGestureRecognizerStateChanged: 
      NSLog(@"!!!!handleLongPress: StateChanged !!!!!"); 
      break; 
     case UIGestureRecognizerStateEnded: 
      NSLog(@"!!!!handleLongPress: StateEnded !!!!!"); 
      break; 
     default: 
      break; 
    } 
} 
+0

你的代码似乎对我来说工作得很好。你是否在你的龙头和平底手势识别器之间设置了任何类型的依赖关系,或者你在该视图上是否还有其他识别器? – 2010-07-27 02:10:05

+0

我的任何手势识别器之间没有依赖关系。是的,我对这个观点有几个认识者。我被难住了...... :( – annie 2010-07-27 02:39:48

回答

1

我有一个类似的问题,它是由UILongPressGestureRecognizer设置引起的:我用的是原始样品的代码所指定的numberOfTapsRequired = 1,我不得不快速抽头和释放,然后长按让它工作,而不是仅仅点击几秒钟。当我删除numberOfTapsRequired时,代码现在表现得如我所料。希望这有助于=)

+1

哈,傻我!我刚刚看到一年多前提出的原始问题,但无论如何,希望我的回答可以帮助其他人;-) – rtovars 2011-09-05 19:51:59