Существуют ли в Objective-C/Cocoa глобальные события, связанные с активацией управления миссией или изменением пространств?

В настоящее время я работаю над приложением меню OSX, которое использует настраиваемый вид элемента состояния и NSPopover для отображения содержимого.

Я пытаюсь заставить его отклоняться в те моменты, когда это имело бы смысл, например, при изменении пробелов, поскольку всплывающее окно не перемещает пробелы, как это делает окно, или когда активируется контроллер миссии.

В настоящее время при управлении миссией NSPopover остается сверху, как показано на этом снимке экрана.

В настоящее время я использую NSEvent addGlobalMonitorForEventsMatchingMask: с некоторыми масками событий мыши, и это работает нормально, но не охватывает все необходимые события.

Итак, есть ли способ определить, когда происходят основные события ОС, такие как открытие центра управления полетом, изменение пространства и т. д.?

Любая помощь будет принята с благодарностью.


person Grant Lucas    schedule 19.03.2014    source источник
comment
Я также пытался использовать NSPopoverBehaviorTransient, но я потерял необходимый контроль, когда всплывающее окно закрывается. Просто добавьте этот бит информации для завершения.   -  person Grant Lucas    schedule 19.03.2014


Ответы (1)


Вы можете получать уведомления об изменениях мест, зарегистрировавшись на NSWorkspace's NSWorkspaceActiveSpaceDidChangeNotification. Для управления полетами как такового уведомления нет, но вы можете выяснить, можно ли использовать NSWorkspaceDidActivateApplicationNotification или другие уведомления, чтобы определить, что вам нужно.

ХТН

person CRD    schedule 19.03.2014
comment
Потрясающий. Спасибо за вашу помощь! NSWorkspaceActiveSpaceDidChangeNotification Отлично сработало для космических изменений! До сих пор мне не удалось найти ничего для управления полетами, но я приближаюсь к тому, чтобы вместо этого отказаться от NSPopover для панели или окна. - person Grant Lucas; 20.03.2014