Почему и как UIPanGestureRecognizer отключает UISwipeGestureRecognizer, тогда как UITapGestureRecognizer не отключает друг друга по умолчанию? - PullRequest
0 голосов
/ 28 января 2019

В документе Координация нескольких распознавателей жестов , он говорит:

UIKit обычно позволяет распознавать только один жест за один раз в одном представлении.... Например, в представлении, которое содержит распознаватели жестов как панорамирования, так и пролистывания, считывания никогда не распознаются .

С учетом сказанного существуют и некоторые исключения.Например, в представлении с двумя UITapGestureRecognizer с действиями оба будут запущены .

Существует UIGestureRecognizerDelegate метод gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:), который вступает в игру извне .Но как встроенные в систему распознаватели жестов, такие как UITapGestureRecognizer, могут решить внутренне , работать или нет с другими распознавателями?Или есть ли разница между распознавателями непрерывных жестов и распознавателями дискретных жестов в отношении поведения?

1 Ответ

0 голосов
/ 29 января 2019

Существует два интересных метода UIGestureRecognizer в процессе принятия решений, в которых распознаватели жестов могут быть "предотвращены":

Отладив подклассы UITapGestureRecognizer, UISwipeGestureRecognizer и UIPanGestureRecognizer, я обнаружил, что:

  • A "распознаватель с двойным касанием предотвратит распознавание «одним касанием», но НЕ наоборот
  • Распознаватель панорамирования предотвратит распознавание смахивания

При наличии нескольких распознавателей жестов первыйкоторый распознает его жест, по умолчанию сделает другие распознаватели .failed.

Это объясняет наблюдаемое поведение.

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