Многозадачный жест четырьмя пальцами активирует жест UIPinchGestureRecognizer
Я использую UIPinchGestureRecognizer, который использует 2 пальца по умолчанию. Если пользователь решает выполнить многозадачный жест, действие жестов повышения также активируется.
Есть ли способ отменить жест повышения при обнаружении более четырех экземпляров UITouch?
Редактировать Удален пример кода, так как это был неправильный подход.
2 ответа
Многозадачным жестом numberOfTouches
вернулся UIPinchGestureRecognizer
2 вместо 4 или 5, потому что некоторые касания игнорируются.
Вы можете подкласс UIPinchGestureRecognizer
и переопределить ignoreTouch:forEvent
отменить распознаватель, если событие имеет 4 или 5 касаний:
- (void) ignoreTouch:(UITouch*)touch forEvent:(UIEvent*)event
{
[super ignoreTouch:touch forEvent:event];
// Cancel recognizer during a multitask gesture
if ([[event allTouches] count] > 3)
{
self.state = UIGestureRecognizerStateCancelled;
}
}
Поскольку вы не создаете подкласс UIPinchGestureRecognizer, вам не следует использовать touchBegan:withEvent:
, Вместо этого вы должны обрабатывать его в методе, который вызывается, когда происходит пинч.
- (void)handlePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
// if there are 2 fingers being used
if ([pinchGestureRecognizer numberOfTouches] == 2) {
// do stuff
}
}