-1

I need to find the way to respond to notification centre being closed/hidden. The reason is that I have a pop up NSMenu in that widget, and if you open it and then close entire notification centre, pop up menu remains on the screen.

I have already tried to implement NSWindowDelegate but there is no such event that defines closing of today widget centre. The closest things I found are -windowDidMiniaturize: and -windowWillClose:. But when side bar closes they are not invoked.

markvasiv
  • 522
  • 2
  • 16

1 Answers1

1

Finally I have found needed method in NSWindowDelegate protocol.

First step is to add self (in that case it is viewController) as an observer for desired method: windowDidResignKey:

-(void)viewWillAppear {
  //set this view controller delegate for selector windowDidResignKey
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:self.view.window];
}

And second is to implement this method:

- (void)windowDidResignKey:(NSNotification *)notification {
  //If window did resign key (close today center) - close menus
  if(_sourceLanguageMenu)
    [ _sourceLanguageMenu cancelTracking];
  if(_targetLanguageMenu)
    [ _targetLanguageMenu cancelTracking];
}
markvasiv
  • 522
  • 2
  • 16