Проверьте, открыты ли nspopover перед созданием нового

В моем коде есть некоторые функции, чтобы открывать всплывающее окно в любое время, когда происходит событие. Проблема в том, что если эти события происходят одно за другим, открытые всплывающие окна перекрываются.

Я хотел бы закрыть одно всплывающее окно при открытии нового.

Есть ли способ получить доступ из nswindow, если есть активное всплывающее окно?

Заранее спасибо и с уважением


person RuLoViC    schedule 25.01.2016    source источник


Ответы (2)


Я думаю, вам нужно поиграть с методами уведомления NSPopover, такими как:

- (void)popoverDidShow:(NSNotification *)notification;
- (void)popoverWillClose:(NSNotification *)notification;

И добавьте немного логики, которая будет скрывать не закрытый поповер...

person toohtik    schedule 25.01.2016
comment
Но как мне найти не закрытый поповер? - person RuLoViC; 26.01.2016
comment
Например, вы можете сохранить предыдущее открытое всплывающее окно в свойстве. - person toohtik; 27.01.2016

Наконец, я смог понять это, используя опубликованные уведомления:

[[NSNotificationCenter defaultCenter]
    addObserver:self
       selector:@selector(popoverWillShow:)
           name:NSPopoverWillShowNotification
         object:nil];

И затем в селекторе я сравниваю объекты: (поповер - это NSPopover)

- (void)popoverWillShow:(NSNotification *)notification {
  if (![popover isEqual:[notification object]])
  [self close];
}
person RuLoViC    schedule 27.01.2016