События (iOS)

События в iOS представляют пальцы касающиеся представления приложения или пользователя, встряхивающего устройство. Один или более пальцев приземляются на одном или более представлениях, возможно перемещаются, и затем поднимаются с представления или представлений. Поскольку это происходит, Мультисенсорная система iPhone регистрирует эти касания как события и отправляет их в в настоящее время активное приложение для обработки. Этот диапазон возможных сенсорных способов поведения, с момента, первая функция приземляется на представлении до последнего пальца, поднимается с того представления, определяет мультисенсорную последовательность. Приложения (и объекты платформы) анализируют мультисенсорные последовательности, обычно чтобы определить, являются ли они жестами, такими как повышения, и сильно ударяет.

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

Объекты представляют пальцы, касающиеся представления

Пальцы, касающиеся представления, представлены UITouch объекты. Сенсорные объекты включают информацию, такую как представление, которого палец касается, расположение пальца в представлении, метке времени и фазе. Сенсорный объект проходит через несколько фаз во время мультисенсорной последовательности в данном порядке:

UITouchPhaseBegan

Палец приземлился на представлении.

UITouchPhaseMoved

Палец углубил то представление или смежное представление.

UITouchPhaseEnded

Палец поднялся с представления.

Сенсорный объект может также быть Стационарной фазой или быть отменен. Сенсорные объекты являются персистентными через мультисенсорную последовательность, но видоизменяется их состояние. Пакеты приложений касаются объектов в UIEvent объекты, когда это поставляет им представлению для обработки.

Art/event_delivery.jpg

Поставка сенсорных объектов следует за определенным трактом

В основном цикле событий объект приложения получает (необработанные) сенсорные события в своей очереди событий, упаковывает их как UITouch объекты в UIEvent объекты, и отправляют их в окно представления, в котором произошло касание. Объект окна, в свою очередь, отправляет эти объекты в это представление, которое известно как представление теста хита. Если это представление не может обработать сенсорное событие (обычно, потому что это не реализовало необходимые методы обработки событий), перемещения события цепочка респондента, пока это или не обрабатывается или отбрасывается.

Для обработки событий, необходимо переопределить четыре метода

Респондент возражает, которые включают пользовательские представления и просматривают контроллеры, обрабатывают события путем реализации четырех методов, объявленных UIResponder класс:

  • touchesBegan:withEvent: вызывается для сенсорных объектов в, Начал фазу.

  • touchesMoved:withEvent: вызывается для сенсорных объектов в Перемещенной фазе.

  • touchesEnded:withEvent: вызывается для сенсорных объектов в Законченной фазе.

  • touchesCancelled:withEvent: когда некоторое внешнее событие — например, входящий телефонный вызов — заставляет операционную систему отменять сенсорные объекты в мультисенсорной последовательности, вызывается.

Первым параметром каждого метода является ряд сенсорных объектов в данной фазе. Вторым параметром является a UIEvent возразите, что отслеживает все сенсорные объекты в текущей мультисенсорной последовательности.

По умолчанию представление в состоянии получить мультисенсорные события. Экземпляры некоторых классов представления UIKit, однако, не могут получить мультисенсорные события потому что их userInteractionEnabled свойство установлено в NO. Если Вы разделяете эти классы на подклассы и хотите получить события, несомненно, установят это свойство в YES. Несмотря на то, что пользовательские представления и контроллеры представления должны реализовать все четыре метода, подклассы классов представления UIKit должны только реализовать метод, соответствующий фазе или фазам интереса; в этом случае, однако, они, несомненно, должны будут вызвать реализацию суперкласса сначала.

Обработка событий движения

Через акселерометр устройства операционная система обнаруживает определенные движения и отправляет их как события к активному приложению. (В настоящее время единственное поддерживаемое движение встряхивает устройство.) Первый респондент сначала получает эти события движения (как UIEvent объекты), и если это не может обработать их, они перемещаются цепочка респондента. Система говорит приложение только, когда движение запускается и когда это останавливается; соответствие UIResponder методы motionBegan:withEvent: и motionEnded:withEvent:. Единственной информацией, переданной объекту респондента обработки, являются данные, инкапсулировавшие объектом-событием: тип события (в этом случае, UIEventTypeMotion), подтип события (в этом случае, UIEventSubtypeMotionShake), и метка времени.