2011-12-22 129 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