У меня есть приложение для iPad, которое широко использует UIGestureRecognizer всех ароматов. Вообще, я большой поклонник. У меня есть одна неприятная и очень специфическая проблема с UIPinchGestureRecognizer:
Рассмотрим сценарий, в котором пользователь делает жест щепоткой. Затем , не перемещая один палец ВСЕ , удаляет другой палец и заменяет его в другом месте и продолжает пинч. (Это не так невозможно, как кажется).
Моя проблема, похоже, заключается именно в общей неспособности UIGestureRecognizer замечать, когда палец покидает экран, и запускать какие-либо действия. Я заметил это и в других местах (touchSegan и touchesEnded), но я смог взломать его. Не в этот раз.
Вот как выглядит действие для UIGestureRecognizer:
- UIGestureRecognizerStateBegan, когда начинается пинч.
- n UIGestureRecognizerStateChangeds, а пинч меняется.
- Неловкое молчание , когда пользователь убирает палец.
- Неловкое молчание когда пользователь заменяет палец, вероятно, далеко.
- Другой UIGestureRecognizerStateChanged при возобновлении пинча. 5.
Теперь у меня возникла проблема на шаге 5. Поскольку в обработчике на шагах 3 и 4 ничего не происходит, он совершенно плавно переходит из UIGestureRecognizerStateChangeds в 2 и 5, но многое произошло. Для обработчика это выглядит так, как будто пользователь только что сделал невероятно быстрое повышение, когда мятежный палец перемещается между сотнями экранных сообщений за время между сообщениями обработчика.
Теперь, если бы пользователь не смог на самом деле так быстро ущипнуть, я мог бы просто установить порог для допустимых отклонений положения пальцев между обновлениями. Но это возможно. Быстрый жест щепотки действительно может заставить палец пользователя путешествовать на такие большие расстояния. Таким образом, кульминация проблемы заключается в следующем; Неспособность UIPinchGestureRecognizer отличить нечетную ситуацию, описанную выше, от быстрого жеста жестов. Мне нужно обращаться с этим совершенно по-разному, и сейчас у меня нет никакого способа сказать разницу. Почему ОС не может сказать мне, когда палец покидает экран? Это особенность емкостного экрана или ошибка ОС? Или ... намеренный дизайн ...?