【问题标题】:Check if there are nspopover opened before creating new one在创建新的之前检查是否打开了nspopover
【发布时间】:2016-01-25 15:28:17
【问题描述】:

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

我想在打开新弹出框时关闭一个弹出框。

如果有一个活动的弹出窗口,有什么方法可以从 nswindow 获取?

提前致谢和问候

【问题讨论】:

    标签: cocoa nswindow nspopover


    【解决方案1】:

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

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

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

    【讨论】:

    • 但是如何找到未关闭的弹出框?
    • 例如,您可以在属性中存储以前打开的弹出框。
    【解决方案2】:

    最后我能够通过使用发布的通知来弄清楚:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      相关资源
      最近更新 更多