【问题标题】:NSAlert above NSPopoverNSAlert 高于 NSPopover
【发布时间】:2015-03-09 10:13:53
【问题描述】:

我有一个从 NSStatusItem 显示的 NSPopover。此弹出窗口不时显示 NSAlers。问题是这些警报总是出现在弹出框下方,即使它们成为关键窗口。即使我拖动它,它仍然在弹出框下方。有没有办法在弹出框上方发出警报?

【问题讨论】:

    标签: macos cocoa nspopover nsalert


    【解决方案1】:

    这将起作用:DispatchQueue.main.async { alert.window.level = .popUpMenu } // moves the alert above statusbar app

    【讨论】:

      【解决方案2】:

      一种解决方法是使用方法beginSheetModal 而不是runModal 来显示NSAlert。使用beginSheetModal,您必须指定与弹出框关联的窗口以将工作表附加到,并且您需要使用完成处理程序。通过将工作表附加到弹出窗口,您至少可以保证 NSAlert 将显示在弹出窗口的前面。

      更改 NSAlert 的 NSStatusWindowLevel 并没有将警报移动到我的弹出框前面。这可能与初始化 NSAlers 的特定方式有关。

      【讨论】:

      • 不是最优的,因为警报会将它自己固定到弹出框的顶部。与预期的行为相比。屏幕中心
      【解决方案3】:

      NSStatusItems 使用NSStatusWindowLevel 的窗口级别。因此,从其中显示的弹出窗口或其他子窗口将继承该窗口级别。

      您应该确保警报窗口处于或高于此窗口级别。

      【讨论】:

        猜你喜欢
        • 2013-04-25
        • 1970-01-01
        • 2010-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-02
        • 1970-01-01
        相关资源
        最近更新 更多