今天小部件中心关闭时调用什么操作?
What action is invoked when today widget center is being closed?
我需要找到响应通知中心 closed/hidden 的方法。原因是我在那个小部件中有一个弹出窗口NSMenu
,如果你打开它然后关闭整个通知中心,弹出菜单仍然在屏幕上。
我已经尝试实施 NSWindowDelegate
但没有这样的事件定义今天小部件中心的关闭。我找到的最接近的东西是 -windowDidMiniaturize:
和
-windowWillClose:
。但是当侧边栏关闭时,它们不会被调用。
终于在NSWindowDelegate
协议中找到了需要的方法。
第一步是将自己(在这种情况下是 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];
}
我需要找到响应通知中心 closed/hidden 的方法。原因是我在那个小部件中有一个弹出窗口NSMenu
,如果你打开它然后关闭整个通知中心,弹出菜单仍然在屏幕上。
我已经尝试实施 NSWindowDelegate
但没有这样的事件定义今天小部件中心的关闭。我找到的最接近的东西是 -windowDidMiniaturize:
和
-windowWillClose:
。但是当侧边栏关闭时,它们不会被调用。
终于在NSWindowDelegate
协议中找到了需要的方法。
第一步是将自己(在这种情况下是 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];
}