想要将 Kyle KIM 的答案提取到自己的答案中,因为上述具有数组访问的解决方案对我造成了异常。
在我的用例中,我使用这个键盘快捷键库将应用程序带到前台。
我还将它与新的SwiftUI 应用程序功能一起使用,谢天谢地,这一切都可以协同工作——即使您单击关闭按钮,它也会再次调用。
class AppDelegate: NSObject, NSApplicationDelegate {
var window: NSWindow?
func applicationDidBecomeActive(_ notification: Notification) {
self.window = NSApp.mainWindow
}
func applicationDidFinishLaunching(_ aNotification: Notification) {
KeyboardShortcuts.onKeyUp(for: .toggleApp) {
if !NSApp.isActive || !(self.window?.isKeyWindow ?? false) {
NSApp.activate(ignoringOtherApps: true)
self.window?.makeKeyAndOrderFront(self)
} else {
print("App already active")
}
}
}
}
!NSApp.isActive 和关键窗口检查都是必需的,因为当用户单击“关闭按钮”时,寡妇不再是关键但仍处于活动状态。该应用程序保持活动状态,直到他们单击其他应用程序。您可以通过窗口的焦点颜色看到这种情况。
请注意,此 AppDelegate 不是我的应用程序的主要入口点,它与 swiftUI 一起使用:
@main
struct MainApp: App {
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {...}
}