2011-12-22 130 views
0

我目前有幾個可拖拽的圖層鏈接到UILabels。我有一個LongPressRecognizer在標籤上長按,然後移動標籤被拖動的圖層。如何在iPad上同時允許多個長按手勢?

我已經通過捕捉在識別的目標姿勢像這樣實現的:

- (void)handleDragging:(UILongPressGestureRecognizer *)gestureRecognizer 
{ 
    switch ([gestureRecognizer state]) 
    { 
     case UIGestureRecognizerStateBegan: 
      [self startDragging:gestureRecognizer]; 
      break; 
     case UIGestureRecognizerStateChanged: 
      [self doDrag:gestureRecognizer]; 
      break; 
     case UIGestureRecognizerStateEnded: 
     case UIGestureRecognizerStateCancelled: 
     case UIGestureRecognizerStateFailed: 
      [self stopDragging:gestureRecognizer]; 
      break; 
     default: 
      break; 
    } 
} 

不過,我想使用戶,而他們正在拖動一個標籤,必須執行能力另一個長按另一個標籤可同時拖動多個標籤。由於識別器當前接受1次觸摸(numberOfTouchesRequired = 1),它似乎無法拾取其他事件。但是,每次在iPad上發生另一個觸摸事件時,都會觸發gestureRecognizerStateChanged事件。然而,識別器上的numberOfTouches仍然顯示一次觸摸。

是給每個標籤自己的LongPressRecognizer最佳的解決方案,或者是有什麼更優雅我可以用一個識別器嗎?

回答

6

在您的視圖控制器...

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {   
    return YES; 
} 

而且不要忘了

recognizer.delegate = self; 
創建每個手勢時

...

+0

這似乎並不爲允許單個長按識別器來管理多個長按。 我想這就是我要問的。現在我以這種方式思考,我甚至不確定這是如何識別器應該如何工作?他們一次只是一個手勢的處理者嗎? – JKomusin 2011-12-23 22:20:03