Пользовательские события (OS X)

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

Art/event_delivery_OSX.jpg

AppKit объявляет, что константы представляют большинство типов событий. Это также объявляет методы, которые необходимо переопределить для обработки событий определенных типов и категорий.

Событие и сенсорные объекты

Когда AppKit вызывает метод обработки событий, он передает в NSEvent объект. Этот объект инкапсулирует информацию, связанную с пользовательским действием, таким как тип события, метка времени и связанное окно. В зависимости от типа события информация может также включать расположение события в окне, числе щелчков мышью, символы Unicode (для нажатия клавиши), и модифицирующие клавиши, если таковые имеются, которые были нажаты.

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

Поставка события

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

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

Обработка события

Обработать событие, класс респондента (обычно пользовательское представление) первые переопределения acceptsFirstResponder метод (NSResponder) возвратиться YES. (Представление по умолчанию не реагирует на события.) Это тогда реализует один или несколько методов, объявленных NSResponder класс для событий определенных типов и характеристик, такой как mouseUp:, keyDown:, и tabletProximity:.

Много реализаций обработки событий исследуют переданный - в NSEvent объект. Для большей части мыши, планшета и других событий, Вы получаете расположение события и преобразовываете то расположение в систему локальной координаты представления. Вы могли бы также хотеть проверить тип события, подтип, метку времени и флаги модификатора. При завершенной обработке события не вызывайте реализацию суперкласса метода. Если Вы не обрабатываете событие, или обрабатываете его только частично, передаете его цепочка респондента путем вызова реализации суперкласса.

События жеста обрабатываются тот же путь как другие события. Вы реализуете методы такой как magnifyWithEvent: и rotateWithEvent:.NSEvent класс определяет методы доступа такой как magnification и rotation это дает Вам информацию, необходимо обработать событие.

Необходимые как условие статьи

Похожие статьи

Категорическое обсуждение

    Руководство по обработке событий какао

Проекты примера кода

  • LightTable
  • TargetGallery