我有一个自定义的NSWindow类,它有以下几种方法:
- (void)setupWindowForEvents{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignMainNotification object:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:self];
}
-(void)windowDidResignKey:(NSNotification *)note {
NSLog(@"notification");
[self close];
}
我致电[_window setupWindowForEvents];
,但永远不会调用windowDidResignKey
。
这就是我调用NSWindow的方式:当点击状态栏项时我makeKeyAndOrderFront
并且状态栏项目正下方显示窗口,如下所示:
当窗口失去焦点时,我没有得到任何通知的任何想法?我已经使用NSWindowDidResignMainNotification
和NSWindowDidResignKeyNotification
来查看是否有任何效果,但没有一个有效。
答案 0 :(得分:9)
你可能没有收到通知,因为你实际上从来都不是第一名的。您的窗口似乎是无边框的,默认情况下无边框窗口不会获取关键窗口状态。
在您的窗口子类中,请确保在以下方法上返回YES:
- (BOOL)canBecomeKeyWindow {
return YES;
}
- (BOOL)canBecomeMainWindow {
return YES;
}