在创建新的之前检查是否打开了nspopover

时间:2016-01-25 15:28:17

标签: cocoa nswindow nspopover

我的代码中有一些功能可以在事件发生时随时打开一个popover。问题是如果这些事件一个接一个地发生,那么打开的弹出窗口是重叠的。

我想打开一个弹出窗口时关闭一个弹出窗口。

如果有活跃的弹出窗口,有没有办法从nswindow获取?

提前致谢并问候

2 个答案:

答案 0 :(得分:1)

我认为您需要使用NSPopover的通知方法,例如:

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

并添加一些隐藏未关闭的弹出窗口的逻辑......

答案 1 :(得分:1)

最后,我能够通过发布通知来解决这个问题:

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

然后在选择器中我比较对象:( popover是一个NSPopover)

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