NSApplication委托和首选项窗格

时间:2008-11-28 21:53:18

标签: cocoa macos delegates

似乎我无法在“系统偏好设置”面板中控制NSApp委托,这是可以理解的。有没有其他方法可以在程序激活时通知我的对象?

2 个答案:

答案 0 :(得分:4)

Cocoa框架中的大多数委托方法都只是通知方法。其中包括application{Will,Did}{Become,Resign}Active:,它们是NSApplication{Will,Did}{Become,Resign}ActiveNotification的通知方法。通知与委托方法位于同一位置:the NSApplication documentation

因此,只需在本地NSNotificationCenter上注册这些通知。

答案 1 :(得分:3)

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;