iOS. Приемы программирования
Шрифт:
Решение
Создайте экземпляр класса UILongPressGestureRecognizer и добавьте его к виду, в котором требуется распознавать жесты долгого нажатия. h-файл контроллера вида будет определяться следующим образом:
Далее приведен метод экземпляра viewDidLoad, относящийся к контроллеру вида, где используется распознаватель долгих нажатий. Этот распознаватель реализован в следующем. m-файле:
Если распознаватель долгих нажатий инициирует события, отправляемые объекту-получателю, а пользователь продолжает совершать такой жест и в этой ситуации поступает входящий звонок либо наступает какое-то иное прерывание, то распознаватель жестов перейдет в состояние UIGestureRecognizerStateCancelled. Объекту-получателю не будет поступать никакой информации от распознавателя жестов до тех пор, пока пользователь снова не совершит всю последовательность действий, требуемых, чтобы возобновился процесс распознавания. В данном примере распознавание возобновится после удержания хотя бы двух пальцев на виде в контроллере вида, и нажатие должно длиться не менее 1 секунды.
Код работает в контроллере вида со свойством longPressGestureRecognizer типа UILongPressGestureRecognizer. Этот аспект подробнее рассмотрен в подразделе «Решение» данного раздела.
Обсуждение
В составе iOS SDK есть класс для распознавания долгих нажатий, который называется UILongTapGestureRecognizer. Жест долгого нажатия инициируется, когда пользователь нажимает одним или несколькими пальцами (количество пальцев в данном случае задает программист) вид UIView и удерживает палец (или пальцы) в этой точке на протяжении определенного количества секунд. Учитывайте, что долгие нажатия — это непрерывные события.
На работу распознавателя жестов долгих нажатий влияют четыре важных свойства:
• numberOfTapsRequired — это количество нажатий целевого вида, которые пользователь должен совершить, прежде чем может быть инициирован жест долгого нажатия. Не забывайте, что нажать — это не просто прикоснуться пальцем к экрану. Нажатие — это движение, при котором палец сначала прижимается к экрану, а потом отрывается от него. По умолчанию это свойство имеет значение 0;
• numberOfTouchesRequired — в этом свойстве указывается количество пальцев, которые должны оказаться на экране, прежде чем начнется распознавание жеста. Если свойство numberOfTapsRequired имеет значение больше 0, то для обнаружения нажатий нужно указать аналогичное количество пальцев;
• allowableMovement — это максимальное количество пикселов, на которое можно продвинуть палец на экране, прежде чем распознавание жеста будет прекращено;
• minimumPressDuration — данное свойство указывает, как долго (в секундах) пользователь должен прижимать пальцы к экрану, прежде чем будет обнаружен жест.
В нашем примере для перечисленных свойств заданы следующие значения:
• numberOfTapsRequired — Default (это значение мы не меняем);
• numberOfTouchesRequired — 2;
• allowableMovement — 100;
• minimumPressDuration — 1.
При таких значениях жест долгого нажатия будет распознан, только если пользователь нажмет экран двумя пальцами и задержит пальцы на экране в течение 1 секунды (minimumPressDuration), причем перемещать пальцы от места касания он может не более чем на 100 пикселов (allowableMovement).
Теперь, когда жест распознан, он вызовет метод handleLongPressGestures:, который можно реализовать следующим образом:
Я еще барон. Книга III
3. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Я снова не князь! Книга XVII
17. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
рейтинг книги
Последний Паладин. Том 8
8. Путь Паладина
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
Врубель
Жизнь в искусстве
Документальная литература:
биографии и мемуары
рейтинг книги
Бастард Императора. Том 13
13. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Зайти и выйти
Проза:
военная проза
рейтинг книги
Последний Паладин. Том 13
13. Путь Паладина
Фантастика:
городское фэнтези
попаданцы
аниме
рейтинг книги
Пустоши
1. Медорфенов
Фантастика:
фэнтези
попаданцы
рейтинг книги
Тайна корабля
Проза:
классическая проза
рейтинг книги
Наследие Маозари 8
8. Наследие Маозари
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
рейтинг книги
Последний Герой. Том 4
Последний герой
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Мистики, розенкрейцеры, тамплиеры в Советской России
Научно-образовательная:
история
религиоведение
рейтинг книги