【问题标题】:Keep Cocoa Window Minimized When App Displays NSAlert当 App 显示 NSAlert 时保持 Cocoa 窗口最小化
【发布时间】:2015-08-12 00:00:25
【问题描述】:

我很难确定如何在应用程序运行并显示 NSAlert 时保持其最小化。

简而言之,我有一个正在传输数据的应用程序,它在完成传输时会显示一个 NSAlert。如果应用程序被最小化,我希望它保持这种状态,即使它显示 NSAlert。

我用(在 Swift 中)调用 NSAlert:

alert.beginSheetModalForWindow(self, completionHandler: handler)

但是当这段代码触发时,窗口会自动取消最小化。如果窗口尚未最小化,则它不会抓住焦点或做任何意外(这是我想要的方式)。

有没有办法做到这一点?谢谢!

【问题讨论】:

  • NSAlert 行为就是这样。我的建议是你可以在这种情况下使用 NSUserNotification
  • 如果它的窗口被最小化,使用没有附加到任何东西的 NSAlert 会不会更好?

标签: swift cocoa nswindow nsalert minimized


【解决方案1】:

您可以尝试延迟显示 NSAlert。

将您的警报代码放入方法中。当有触发器调用此方法时,检查您的窗口是否可见。如果是 -> 调用此方法。如果不是 -> 安排一个 NSTimer 在一秒钟后触发并调用自定义方法来检查窗口是否可见(是 -> 显示警报,否 -> 再次安排计时器)。

仅供参考:当显示为工作表时,NSAlert 会创建 NSPanel 的实例,它是 NSWindow 的子类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多