В настоящее время у меня есть несколько перетаскиваемых слоев, связанных с 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;
}
}
Тем не менее, я хотел бы позволить пользователю, пока он перетаскивает одну метку, иметь возможность выполнять дополнительное долгое нажатие на другой этикетке, чтобы перетащить несколько этикеток одновременно. Поскольку распознаватель в настоящее время принимает 1 касание (numberOfTouchesRequired = 1), похоже, он не может улавливать дополнительные события. Однако событие gestureRecognizerStateChanged запускается каждый раз, когда на iPad происходит другое событие касания. Однако numberOfTouches на распознавателе по-прежнему показывает одно касание.
Лучшее решение - предоставить каждой метке собственный LongPressRecognizer или есть что-то более элегантное, что я могу сделать с помощью одного распознавателя?