检测活动NSDocument的焦点/非焦点

时间:2010-07-09 11:17:09

标签: objective-c cocoa macos

无论如何都要检测NSDocument的焦点/焦点?我想动态更新一个与活动文档有关的菜单项,但我看不到任何明显的方法。

原因是,我想激活然后填充文档焦点上的菜单,然后在失去焦点时取消填充和停用。

有什么想法吗?

谢谢,

2 个答案:

答案 0 :(得分:4)

看来NSDocument被设置为所有文档窗口的委托,因此我的NSDocument子类中所需的钩子是:

- (void) windowDidBecomeMain: (NSNotification *) notification
{
    NSLog(@"windowDidBecomeMain:");     
}


- (void) windowDidResignMain: (NSNotification *) notification
{
    NSLog(@"windowWillResign:");        
}


- (void) windowWillClose: (NSNotification *) notification
{
    NSLog(@"windowWillClose:");
}

答案 1 :(得分:1)

上述解决方案不起作用,它可以做到:

我有一个窗口控制器(子类为NSWindowController),并在窗口上添加了一个委托

-(void)windowDidLoad {
    [super windowDidLoad];
    self.window.delegate = self;
}

-(void)windowDidBecomeKey:(NSNotification *)notification {
    // this gets called
}