Применение автоматического распознавания жестов
Рассмотрим сначала метод touchesBegan: withEvent:. В этом методе мы только извлекаем любое касание из совокупности touches и сохраняем его точку. В настоящий момент нас прежде всего интересует скольжение по экрану одним пальцем, поэтому извлекаем лишь одно касание, не обращая внимания на их количество.
В следующем методе, touchesMoved: withEvent:, мы уже делаем нечто более существенное. Сначала получаем текущее положение пальца пользователя.
После этого определяем, насколько далеко палец пользователя переместился как по горизонтали, так и по вертикали относительно исходного положения. Функция fabsf () взята из стандартной библиотеки математических функций на С и возвращает абсолютную величину числового значения с плавающей точкой. Это дает нам возможность вычесть одно числовое значение из другого, не особенно беспокоясь о том, какое из них больше.
Получив оба разностных значения, проверяем, переместился ли пользователь достаточно далеко в одном направлении, но не слишком далеко в другом направлении, чтобы считать такой жест скольжением по экрану. Если это так, задаем текст метки, чтобы сообщить о том, что была обнаружена горизонтальная или вертикальная скольжение. Кроме того, мы используем метод performSelector:withObject:afterDelay: для стирания текста через 2 секунды после его появления на экране. Благодаря этому пользователь может поупражняться в скольжении по экрану, не особенно задумываясь о том, что именно обозначает метка, более раннюю или самую последнюю попытку.
Скомпилируйте и запустите на выполнение приложение Swipes. Если обнаружите, что щелчки кнопкой мыши и перетаскивания курсора не дают никаких видимых результатов, наберитесь немного терпения. Щелкайте и перетаскивайте курсор прямо вниз или же прямо по горизонтали до тех пор, пока не научитесь имитировать скольжение пальцем по экрану.
Процедура, использованная нами для распознавание скольжения пальцем по экрану, сама по себе не так уж и плоха. Вся ее сложность заключается в методе touchesMoved: withEvent:, хотя и он не такой уж сложный. Но то же самое можно сделать и более простым способом. Теперь в состав системы iOS входит класс UIGestureRecognizer, исключающий необходимость следить за всеми событиями, чтобы выяснить, каким образом пальцы двигаются по экрану. Вместо того чтобы использовать класс UIGestureRecognizer непосредственно, создается экземпляр одного из его подклассов, каждый из которых специально предназначен для обнаружения жеста определенного типа, в том числе скольжения, щипка, двойного или тройного постукивания и тд.
- Дата: 18-01-2015, 13:51