Второе касание после начала UILongPressGestureRecognizer - PullRequest
4 голосов
/ 27 августа 2010

Я использую UILongPressGestureRecognizer, и когда я использую один палец, он работает правильно.Когда я кладу второй палец, это не фиксируется распознавателем, delegate продолжает вызываться, но только при первом касании, [recognizer numberOfTouches] всегда равно 1.

Если я установил [recognizer setNumberOfTouchesRequired:2], это такжеработает правильно, я получаю [recognizer numberOfTouches] = 2, когда я кладу 2 пальца одновременно.

Мой вывод таков: после того, как UILongPressGesture распознан и начался, второе касание не изменит его.Это ожидаемое поведение?

1 Ответ

0 голосов
/ 02 июня 2012

Вы можете добавить два разных UILongPressGestureRecognizer, один из которых настроен на numberOfTouchesRequired = 1, а другой = 2. Вы также, вероятно, хотите, чтобы тот, который ожидает, что один палец потерпит неудачу, только если он распознает другой (в случае, если пользователь нажимает одним пальцем и сразу после того, как опускает другой палец).

Было бы что-то вроде этого:

UILongPressGestureRecognizer *oneFingerLongPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerLongPressed:)];
oneFingerLongPressGesture.numberOfTouchesRequired = 1;

UILongPressGestureRecognizer *twoFingersLongPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersLongPressed:)];
twoFingersLongPressGesture.numberOfTouchesRequired = 2;

[oneFingerLongPressGesture requireGestureRecognizerToFail:twoFingersLongPressGesture];

UIView *someView;

[someView addGestureRecognizer:oneFingerLongPressGesture];
[someView addGestureRecognizer:twoFingersLongPressGesture];

[oneFingerLongPressGesture release];
[twoFingersLongPressGesture release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...