Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 检测活动文档的焦点/非焦点_Objective C_Cocoa_Macos - Fatal编程技术网

Objective c 检测活动文档的焦点/非焦点

Objective c 检测活动文档的焦点/非焦点,objective-c,cocoa,macos,Objective C,Cocoa,Macos,是否仍有方法检测文档的焦点/非焦点?我想动态更新与活动文档相关的菜单项,但我看不到任何立即明显的方法 原因是,我想在文档焦点上激活并填充菜单,然后在失去焦点时取消并停用菜单 有什么想法吗 谢谢,似乎NSDocument被设置为所有文档窗口的代理,因此我的NSDocument子类中需要的钩子是: - (void) windowDidBecomeMain: (NSNotification *) notification { NSLog(@"windowDidBecomeMain:");

是否仍有方法检测文档的焦点/非焦点?我想动态更新与活动文档相关的菜单项,但我看不到任何立即明显的方法

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

有什么想法吗


谢谢,

似乎NSDocument被设置为所有文档窗口的代理,因此我的NSDocument子类中需要的钩子是:

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


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


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

上述解决方案不起作用,但确实起了作用:

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

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

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

定义为“与主窗口关联的文档对象。(只读)”。所以我认为这是正确的。只是一个注释。这似乎并不是总能抓住事件。例如,应用程序启动时最初聚焦的窗口不会触发事件。。。