Какое действие вызывается, когда сегодня закрывается центр виджетов?

Мне нужно найти способ ответить на закрытие / скрытие центра уведомлений. Причина в том, что у меня всплывающее окно 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];
}
Другие вопросы по тегам