在 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)
我也有同样的问题。检查是否已经有一个窗口修复了它:
func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
if !flag {
sender.windows.first?.makeKeyAndOrderFront(self)
}
return sender.windows.isEmpty ? true : false
}