我需要找到响应通知中心关闭/隐藏的方法。原因是我在该窗口小部件中弹出NSMenu
,如果您打开它然后关闭整个通知中心,则弹出菜单会保留在屏幕上。
我已经尝试实现NSWindowDelegate
但是没有这样的事件定义今天小部件中心的关闭。我找到的最接近的是-windowDidMiniaturize:
和。{1}}
-windowWillClose:
。但是当侧栏关闭时,它们不会被调用。
答案 0 :(得分:1)
最后,我在NSWindowDelegate
协议中找到了所需的方法。
第一步是添加self(在这种情况下它是viewController
)作为所需方法的观察者:windowDidResignKey:
-(void)viewWillAppear {
//set this view controller delegate for selector windowDidResignKey
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:self.view.window];
}
第二是实施这种方法:
- (void)windowDidResignKey:(NSNotification *)notification {
//If window did resign key (close today center) - close menus
if(_sourceLanguageMenu)
[ _sourceLanguageMenu cancelTracking];
if(_targetLanguageMenu)
[ _targetLanguageMenu cancelTracking];
}