Какое действие вызывается, когда сегодня закрывается центр виджетов?
Мне нужно найти способ ответить на закрытие / скрытие центра уведомлений. Причина в том, что у меня всплывающее окно NSMenu
в этом виджете, и если вы откроете его, а затем закроете весь центр уведомлений, всплывающее меню останется на экране.
Я уже пытался реализовать NSWindowDelegate
но нет такого события, которое бы определяло закрытие сегодняшнего центра виджетов. Самые близкие вещи, которые я нашел, -windowDidMiniaturize:
а также -windowWillClose:
, Но когда боковая панель закрывается, они не запускаются.
1 ответ
Решение
Наконец я нашел нужный метод в 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];
}