Все мы знаешь, что в приложениях для IOS есть возможность создавать
события на основе жестов на экране IPhone или IPad. В XCode мы можем
сделать это с помощью Storyboard или же описать их программно. На мой
взгляд особой разницы нет как это делать, но в данной статье я напишу
как делать это программно. Для начала разберемся с тем какие бывают
жесты.
Список состояний которые можно проверить:
Манипулируя проверками этих состояний можно с точностью отловить, что происходит в тот или иной момент времени когда работает распознаватель жестов.
Рассмотрим ещё несколько опций которые могут быть использованы при работе с распознаванием жестов. Например:
UITapGestureRecognizer– жест нажатия пальцем на экранUIPinchGestureRecognizer - жест "ущипнуть" экранUIRotationGestureRecognizer - жест вращения пальцами по экрануUISwipeGestureRecognizer - жест "скольжения" то есть протянули пальцемUIPanGestureRecognizer - жест, который выглядит как перетаскиваниеUILongPressGestureRecognizer - долгое удерживание пальца на экране
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapOnImageView:)];Tap- это объект распознователя жестов который я инициализировал с помощью указания себя в качестве передаваемого параметра в метод didTapOnImageView. Который отработает когда жест будет выполнен/или начат. Во второй строек я добавил его к объекту UIImageView image. Далее достаточно только создать метод didTapOnImageView как на примере:
[image addGestureRecognizer:tap];
-(void) didTapOnImageView:(UIGestureRecognizer*) recognizer {Почему я написал через слеш выполнен/или начат? Потому, что в методе didTapOnImageView мы указали входящий параметр сам объект распознавания у которого можно получить его состояния и проверить их. Например таким условием:
//код который должен отработать
}
if (recognizer.state == UIGestureRecognizerStateBegan)При использовании UITapGestureRecognizer эта проверка встряли понадобится, но вот при
//в данном случае проверка началось ли распознование жеста
UILongPressGestureRecognizer может быть к стати.Список состояний которые можно проверить:
UIGestureRecognizerStatePossible - распознаватель еще не признал жест, но может быть сенсорным оценке событий. Это состояние по умолчанию.UIGestureRecognizerStateFailed - распознаватель устанавливает этот статус когда жест не может быть выполнен
UIGestureRecognizerStateRecognized - распознаватель понял и распознал жестUIGestureRecognizerStateBegan - распознавание жеста началосьUIGestureRecognizerStateChanged - распознаватель устанавливает этот статус когда жест был изменен и завершит распознавание на следующем цикле обработки
UIGestureRecognizerStateEnded – распознавание жеста закончилосьUIGestureRecognizerStateCancelled - распознавание жеста было отменено
Манипулируя проверками этих состояний можно с точностью отловить, что происходит в тот или иной момент времени когда работает распознаватель жестов.
Рассмотрим ещё несколько опций которые могут быть использованы при работе с распознаванием жестов. Например:
tap.minimumPressDuration = 1.0; //сколько секунд нужно удерживать палец на экране для распознавателя жестаТеперь рассмотрим еще один пример программной реализации жеста скольжения:UILongPressGestureRecognizer
[tap setNumberOfTouchesRequired:1]; //задает количество прикосновений которые необходимо сделать для распознавания жеста
UISwipeGestureRecognizer *swipetoleft = [[UISwipeGestureRecognizer alloc]
initWithTarget:self
action:@selector(didSwipe)];
[swipetoleft setDirection:UISwipeGestureRecognizerDirectionLeft];
[optpodlozhka addGestureRecognizer:swipetoleft];
В данном примере появилась ещё одна строка [swipetoleft
setDirection:UISwipeGestureRecognizerDirectionLeft]; Которая указывает
направление жеста. Это свойство характерно для UISwipeGestureRecognizer.
Этим я хочу сказать что для каждого вида жеста могут быть использованы
разные свойства и настройки. Полный список которых можно посмотреть в UIGestureRecognizer Class Reference.
Комментариев нет:
Отправить комментарий