Кажется, я не могу управлять делегатом NSApp из панели «Системные настройки», что понятно. Есть ли другой способ, которым я могу уведомить свой объект, когда программа станет активной?
Делегат NSApplication и панели настроек
Ответы (2)
Большинство методов делегата в рамках Cocoa — это просто методы уведомления. Сюда входят application{Will,Did}{Become,Resign}Active:
, которые являются методами уведомления для NSApplication{Will,Did}{Become,Resign}ActiveNotification
. Уведомления находятся там же, где и методы делегата: документация NSApplication.
Итак, просто подпишитесь на эти уведомления на локальном NSNotificationCenter
.
NSPreferencePane предоставляет вам несколько методов, которые вы можете переопределить, чтобы реагировать на изменения. В частности, mainViewDidLoad:
дает вам возможность выполнить инициализацию, когда ваша панель настроек становится активной в первый раз.
Если вы на самом деле имели в виду, что хотите отслеживать, когда окно «Системные настройки» становится основным или ключевым, вы можете подписаться на уведомления NSWindow об этих событиях.
// These messages get sent to the a preference panel just before and
// just after it becomes the currently selected preference panel.
- (void) willSelect;
- (void) didSelect;
// The willUnselect message gets sent to the currently selected preference panel
// just before and just after it gets swapped out for another preference panel
- (void) willUnselect;
- (void) didUnselect;