macOS 15:单击 Dock 图标可打开两个窗口

问题描述 投票:0回答:1

在 macOS 15 之前,当用户关闭所有窗口然后单击 Dock 图标时,应用程序不会重新打开窗口。为了解决这个问题,我在

applicationShouldHandleReopen
中添加了
AppDelegate
方法,该方法在早期 macOS 版本中运行良好,允许应用程序在用户单击 Dock 图标时重新打开窗口。

但是,升级到 macOS 15 后,我注意到一个问题:

  • 当我单击 Dock 图标时,会打开两个窗口而不是一个。

  • 如果我注释掉

    applicationShouldHandleReopen
    方法,则只会打开一个窗口,这是预期的行为。

以下是相关代码片段:

 func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
        guard let window = NSApplication.shared.windows.first else { assertionFailure(); return false }
        if !flag {
            window.makeKeyAndOrderFront(nil)
        }
        return true
    }

尝试添加此选项以忽略 macOS15 的此方法,但没有成功,它不允许窗口启动。

@available(macOS, introduced: 10.0, obsoleted: 15.0)

swift macos swiftui appdelegate xcode16
1个回答
0
投票

我也有同样的问题。检查是否已经有一个窗口修复了它:

func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
  if !flag {
    sender.windows.first?.makeKeyAndOrderFront(self)
  }

  return sender.windows.isEmpty ? true : false
}
© www.soinside.com 2019 - 2024. All rights reserved.