Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

Решение

Создайте экземпляр класса UILongPressGestureRecognizer и добавьте его к виду, в котором требуется распознавать жесты долгого нажатия. h-файл контроллера вида будет определяться следующим образом:

#import «ViewController.h»

@interface ViewController 

@property (nonatomic, strong)

UILongPressGestureRecognizer *longPressGestureRecognizer;

@property (nonatomic, strong) UIButton *dummyButton;

@end

@implementation ViewController

Далее приведен метод экземпляра viewDidLoad, относящийся к контроллеру вида, где используется распознаватель долгих нажатий. Этот распознаватель реализован в следующем. m-файле:

— (void)viewDidLoad {

[super viewDidLoad];

self.dummyButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];

self.dummyButton.frame = CGRectMake(0.0f,

0.0f,

72.0f,

37.0f);

self.dummyButton.center = self.view.center;

[self.view addSubview: self.dummyButton];

/* Сначала создаем распознаватель жестов. */

self.longPressGestureRecognizer =

[[UILongPressGestureRecognizer alloc]

initWithTarget: self

action:@selector(handleLongPressGestures:)];

/* Количество пальцев, которые должны находиться на экране. */

self.longPressGestureRecognizer.numberOfTouchesRequired = 2;

/* Допускается движение не более чем на 100 точек,

прежде чем жест будет распознан. */

self.longPressGestureRecognizer.allowableMovement = 100.0f;

/* Пользователь должен прижать к экрану два пальца

(numberOfTouchesRequired) как минимум на секунду, чтобы жест

был распознан. */

self.longPressGestureRecognizer.minimumPressDuration = 1.0;

/* Добавляем этот распознаватель жестов к виду. */

[self.view addGestureRecognizer: self.longPressGestureRecognizer];

}

Если распознаватель долгих нажатий инициирует события, отправляемые объекту-получателю, а пользователь продолжает совершать такой жест и в этой ситуации поступает входящий звонок либо наступает какое-то иное прерывание, то распознаватель жестов перейдет в состояние 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:, который можно реализовать следующим образом:

— (void) handleLongPressGestures:

(UILongPressGestureRecognizer *)paramSender{

/* Здесь мы хотим найти среднюю точку между двумя пальцами,

инициировавшими жест долгого нажатия, который требуется распознать.

Мы сконфигурировали это число, воспользовавшись свойством

numberOfTouchesRequired класса UILongPressGestureRecognizer,

инстанцированного в методе экземпляра viewDidLoad данного контроллера

Поделиться:
Популярные книги

Последний Паладин. Том 7

Саваровский Роман
7. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 7

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Мастер 8

Чащин Валерий
8. Мастер
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Мастер 8

Тринадцатый VII

NikL
7. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VII

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Кодекс Охотника. Книга XXVI

Винокуров Юрий
26. Кодекс Охотника
Фантастика:
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXVI

Чужак из ниоткуда

Евтушенко Алексей Анатольевич
1. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужак из ниоткуда

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV

Московское золото и нежная попа комсомолки. Часть Пятая

Хренов Алексей
5. Летчик Леха
Фантастика:
попаданцы
5.00
рейтинг книги
Московское золото и нежная попа комсомолки. Часть Пятая

Барону наплевать на правила

Ренгач Евгений
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барону наплевать на правила

Уникум

Поселягин Владимир Геннадьевич
1. Уникум
Фантастика:
альтернативная история
4.60
рейтинг книги
Уникум

Второгодка. Книга 2. Око за око

Ромов Дмитрий
2. Второгодка
Фантастика:
героическая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Второгодка. Книга 2. Око за око

По осколкам твоего сердца

Джейн Анна
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
5.56
рейтинг книги
По осколкам твоего сердца

Хозяин Стужи 3

Петров Максим Николаевич
3. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Хозяин Стужи 3