Реализация скольжения несколькими пальцами по экрану
Посмотрим, каким образом можно видоизменить приложение Swipes, чтобы использовать в нем распознаватель жестов вместо процедуры, составленной нами вручную. Как всегда, можете сделать копию папки своего проекта Swipes, чтобы начать с нее новый проект.
Вот, собственно, и все! Для дополнительного "облагораживания" кода можете также удалить строки со ссылками на переменную gestureStartPoint из заголовочного файла SwipesViewController .h, хотя они не нанесут никакого вреда, если их оставить.
Благодаря классу UIGestureRecognizer нам оставалось лишь создать и настроить некоторые распознаватели жестов, а затем ввести их в текущее представление. Когда пользователь взаимодействует с экраном таким образом, что его действия распознаются одним из распознавателей жестов, вызывается указанный нами метод-действие.
Если исходить из общего числа строк кода, то применение распознавателей жестов мало чем отличается от предыдущего подхода, если речь идет о столь простом приложении, как рассматриваемое здесь. Но код, в котором применяются распознаватели жестов, безусловно, проще для понимания и легче для написания. Ведь вам не нужно даже задумываться над проблемой расчета движений пальцами по экрану во времени, поскольку это уже сделано за вас в классе UISwipeGestureRecognizer.
В приложении Swipes мы просто выбираем любой объект из совокупности touches, чтобы выяснить местоположение пальца пользователя, когда он проводит им по экрану. Такой подход вполне допустим в том спучае, если нас интересует распознавание скольжения по экрану только одним пальцем, т.е. наиболее распространенных жестов данного типа.
Но что, если нам требуется обрабатывать проводки по экрану двумя или тремя пальцами? В предыдущих вариантах этой книги мы потратили около 50 строк кода и немало текстовых строк пояснения, чтобы добиться желаемого результата, отслеживая многие экземпляры объекта типа UlTouch среди множества событий касания. Правда, теперь, когда в нашем распоряжении имеются распознаватели жестов, данная проблема может считаться решенной.
Класс UISwipeGestureRecognizer может быть настроен на распознавание любого количества одновременных касаний экрана. По умолчанию каждый его экземпляр ожидает касание одним пальцем, но его можно настроить на обнаружение одновременных касаний экрана любым количеством пальцев.
- Дата: 18-01-2015, 17:14