Обработка событий планшета

Следующие разделы обсуждают вопросы, связанные с обработкой событий планшета.

Упаковка событий планшета

Низкоуровневые события пакета драйверов планшетного устройства или как собственные события планшета или как события от нажатия мыши, обычно в зависимости от того, являются ли они событиями близости или событиями указателя. События близости всегда являются собственными событиями планшета. Приложение Кит объявляет (в NSEvent.h) следующие константы типа события для собственных событий планшета:

typedef enum _NSEventType {
    // ...
    NSTabletPoint     = 23,
    NSTabletProximity = 24,
    // ...
} NSEventType;

Драйверы почти всегда события указателя планшета пакета как подтипы событий от нажатия мыши. Приложение Кит объявляет следующие константы для подтипов планшета всех типов событий, связанных с событием от нажатия мыши (NSLeftMouseDown, NSRightMouseUp, NSMouseMoved, и т.д.):

enum {
    NSMouseEventSubtype           = NX_SUBTYPE_DEFAULT,
    NSTabletPointEventSubtype      = NX_SUBTYPE_TABLET_POINT,
    NSTabletProximityEventSubtype = NX_SUBTYPE_TABLET_PROXIMITY
};

При нескольких исключительных условиях драйверы могут упаковать низкоуровневое событие указателя планшета как a NSTabletPoint тип события вместо подтипа события от нажатия мыши. Они включают следующее:

Поэтому рекомендуется, чтобы Ваш код проверил на события указателя планшета, поставленные и как собственные типы событий и как подтипы мыши.

События планшета и цепочка респондента

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

Приложение, намеревающееся обработать события планшета, должно переопределить по крайней мере пять методов NSResponder:

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