Распознавание касаний
Подмножество касаний, приходящихся только на конкретное представление, можно получить из события NSSet myTouches ” [event touchesForView:self.view);
Каждое событие типа UITouch обозначает отдельный палец, а каждый палец находится в разном положении на экране. Положение отдельного пальца на экране можно определить, используя объект типа UITouch. Он может даже преобразовать точку касания в локальную систему координат представления, если обратиться к нему.
Уведомление можно получить и в том случае, если пользователь двигает пальцами по экрану, для чего достаточно реализовать метод touchesMoved: wi thEvent:. Этот метод вызывается несколько раз в течение длинной проводки пальцем по экрану. Всякий раз, когда он вызывается, в итоге получается совсем другой ряд касаний и другое событие. Помимо определения текущего положения каждого пальца на экране из объектов типа UITouch, можно также выявлять предыдущее местоположение данного касания, т.е. положение пальца, когда в последний раз вызывался метод touchesMoved: w i thEvent: или touche sBegan: w ithEvent.
Когда пользователь отнимает пальцы от экрана, порождается очередное событие и вызывается уведомляющий о нем метод touchesEnded:withEvent:. Если этот метод вызывается, значит, пользователь завершил свой жест.
И последний метод, который имеет отношение к касаниям экрана и может быть реализован реагирующими элементами, называется touchesCancelled:withEvent:. Этот метод вызывается в том случае, если где-то посредине жеста пользователя происходит его прерывание, например, входящим телефонным звонком. Именно в этот момент можно произвести любую необходимую очистку, чтобы начать с нового жеста. Когда данный метод вызывается, метод touchesEnded: wi thEvent: не будет вызываться для текущего жеста.
Итак, довольно теории — перейдем к ее воплощению на практике.
В качестве первого примера рассмотрим небольшое приложение, дающее более ясное представление о том, как упомянутые выше четыре метода, имеющие отношение к касаниям экрана, вызываются из реагирующих элементов. С этой целью создайте в среде Xcode новый проект, используя шаблон View-based Application. Выберите вариант iPhone из раскрывающегося списка Product и присвойте новому проекту имя TouchExplorer.
- Дата: 17-01-2015, 17:56