2010-07-26 82 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