NSTrackingArea в Objective C — Xcode Mac OS

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 на один с перераспределенной областью.

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *