Содержание
Class NSTrackingArea
NSTrackingArea - Область представления, которая генерирует события отслеживания мыши и обновления курсора, когда указатель находится над этой областью.
При создании объекта области отслеживания вы указываете прямоугольник (в системе координат вида), объект-владелец и один или несколько параметров вместе с (необязательно) словарем данных. После его создания вы добавляете объект области отслеживания в представление с помощью метода addTrackingArea:. В зависимости от указанных опций владелец зоны отслеживания получает mouseEntered:, mouseExited:, mouseMoved: и cursorUpdate: сообщения, когда курсор мыши входит, перемещается внутри и покидает зону отслеживания. В настоящее время область отслеживания ограничена прямоугольниками.
Объект NSTrackingArea относится к его виду, а не к его окну. Следовательно, вы можете добавлять и удалять прямоугольники отслеживания, не беспокоясь о том, что представление было добавлено в окно. Кроме того, этот проект позволяет AppKit автоматически вычислять геометрию областей отслеживания при перемещении представления и, в некоторых случаях, когда представление изменяет размер.
Используя NSTrackingArea, вы можете настроить через options* (NSTrackingAreaOptions) тип зоны отслеживания, ситуации, для отслеживания мыши когда область активна.
options* - Одна или несколько констант, которые определяют тип зоны отслеживания, ситуации, когда область активна, и специальные поведения зоны отслеживания. Подробнее см. Описание NSTrackingAreaOptions и связанных констант. Вы должны указать один или несколько параметров для инициализированного объекта для типа зоны отслеживания и когда активна область отслеживания; ноль не является допустимым значением.
Существует четыре варианта опций:
- Область отслеживания активна только тогда, когда представление является первым ответчиком.
- Область отслеживания активна, когда представление находится в окне ключа.
- Область отслеживания активна, когда приложение активно.
- Область отслеживания всегда активна (даже если приложение неактивно).
Другие опции для NSTrackingArea включают указание, что область отслеживания должна синхронизироваться с видимым прямоугольником представления (visibleRect) и для генерации событий mouseEntered: и mouseExited:, когда перемещается мышь.
Другие методы NSView, связанные с объектами NSTrackingArea (помимо addTrackingArea :) включают removeTrackingArea: и updateTrackingAreas. Представления могут переопределять последний метод для повторного компрометации и замены их объектов NSTrackingArea в определенных ситуациях, таких как изменение размера visibleRect.
Инициализация зоны отслеживания объекта
Метод экземпляра
initWithRect:options:owner:userInfo:
Инициализирует и возвращает объект, определяющий область представления, для получения событий отслеживания мыши, событий с перемещением мыши, событий обновления курсора или, возможно, всех этих событий.
Объявление
- (instancetype)initWithRect:(NSRect)rect options:(NSTrackingAreaOptions)options owner:(id)owner userInfo:(NSDictionary<id, id> *)userInfo;
Пример
// Установить зону отслеживания объекта, когда объект будет добавлен в Window. NSTrackingArea* trackingArea = [[NSTrackingArea alloc] initWithRect:[buttonUndo bounds] options: (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways) owner:buttonUndo userInfo:nil]; // Добавляем объект NSTrackingArea в целевое представление [buttonUndo addTrackingArea:trackingArea];
Параметры
rect
Прямоугольник, который определяет область целевого представления в системе координат вида для отслеживания событий, связанных с отслеживанием мыши и обновлением курсора. Указанный прямоугольник не должен превышать прямоугольник границ представления.
options
Одна или несколько констант, которые определяют тип зоны отслеживания, ситуации, когда область активна, и специальные поведения зоны отслеживания. Подробнее см. Описание NSTrackingAreaOptions и связанных констант. Вы должны указать один или несколько параметров для инициализированного объекта для типа зоны отслеживания и когда активна область отслеживания; ноль не является допустимым значением.
owner
Объект для получения запрошенных сообщений отслеживания мыши, перемещения мыши или обновления курсора. Это необязательно должно быть представление, связанное с созданным объектом NSTrackingArea, но должно быть объектом, способным отвечать на методы NSResponder mouseEntered:, mouseExited:, mouseMoved:, and cursorUpdate:.
userInfo
Словарь, содержащий произвольные данные для каждого события с вводом мыши (важно -кроме mouseMoved:), выводом мыши и обновлением курсора. При обработке такого события вы можете получить словарь, отправив userData на объект NSEvent. (Словарь недоступен для событий с перемещением мыши.) Этот параметр может быть равен нулю.
Возвращаемое значение
Новый объект области отслеживания.
Обсуждение
После создания и инициализации объекта NSTrackingArea с помощью этого метода вы должны добавить его в целевое представление с помощью метода addTrackingArea:. Когда изменения в представлении требуют изменений в геометрии его областей отслеживания, Application Kit вызывает updateTrackingAreas. Представление должно реализовать этот метод, чтобы заменить текущий объект NSTrackingArea на один с перераспределенной областью.