如何在iPad上同时允许多个长按手势?

JKo*_*sin 0 multi-touch gesture ipad ios

我目前有几个可拖放的图层链接到UILabels.我有一个LongPressRecognizer在标签上拾取长按,并在拖动标签的情况下移动图层.

我通过在识别器的目标中捕捉手势来实现这一点,如下所示:

- (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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想让用户在拖动一个标签时能够在另一个标签上执行额外的长按以同时拖动多个标签.由于识别器当前接受1次触摸(numberOfTouchesRequired = 1),因此它似乎无法接收其他事件.但是,每次在iPad上发生另一个触摸事件时,都会触发gestureRecognizerStateChanged事件.但是,识别器上的numberOfTouches仍显示单次触摸.

给每个标签自己的LongPressRecognizer是最好的解决方案,还是我可以用一个识别器做更优雅的事情?

Rog*_*Rog 6

在你的视图控制器......

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {        
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

别忘了

recognizer.delegate = self;
Run Code Online (Sandbox Code Playgroud)

在创建每个手势时......