2010-08-27 2 views
3

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

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

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

+0

Да, это ожидаемое поведение. Элемент управления будет ограничен количеством касаний, которое вы указали перед запуском. – MrShoot

ответ

0

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

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

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]; 
Смежные вопросы