Swift 从菜单栏应用程序启动主应用程序
我已经成功创建了一个应用程序,我不希望它出现在Dock上,直到用户单击菜单栏项,然后它启动应用程序,如果用户退出主应用程序,菜单栏项仍然保留。好的,经过几天的研究,我终于想出了如何做。 Swift 2.3Swift 从菜单栏应用程序启动主应用程序,swift,cocoa,menubar,Swift,Cocoa,Menubar,我已经成功创建了一个应用程序,我不希望它出现在Dock上,直到用户单击菜单栏项,然后它启动应用程序,如果用户退出主应用程序,菜单栏项仍然保留。好的,经过几天的研究,我终于想出了如何做。 Swift 2.3 func toggleApp(sender: AnyObject) { if self.window!.visible { self.window.orderOut(window) NSApplication.sharedApplication().se
func toggleApp(sender: AnyObject) {
if self.window!.visible {
self.window.orderOut(window)
NSApplication.sharedApplication().setActivationPolicy(NSApplicationActivationPolicy.Accessory)
} else {
NSApplication.sharedApplication().setActivationPolicy(NSApplicationActivationPolicy.Regular)
self.window!.makeKeyAndOrderFront(nil)
NSApp.activateIgnoringOtherApps(true)
}
}
这用于在用户退出(CMD Q)应用程序时保留菜单栏:
希望它能帮助别人。好的,经过几天的研究,我终于想出了办法。 Swift 2.3
func toggleApp(sender: AnyObject) {
if self.window!.visible {
self.window.orderOut(window)
NSApplication.sharedApplication().setActivationPolicy(NSApplicationActivationPolicy.Accessory)
} else {
NSApplication.sharedApplication().setActivationPolicy(NSApplicationActivationPolicy.Regular)
self.window!.makeKeyAndOrderFront(nil)
NSApp.activateIgnoringOtherApps(true)
}
}
这用于在用户退出(CMD Q)应用程序时保留菜单栏:
希望它能帮助别人。在Swift 5中:
func toggleApp(sender: AnyObject) {
if self.window.visible {
self.window.orderOut(window)
NSApplication.shared.setActivationPolicy(NSApplication.ActivationPolicy.accessory)
} else {
NSApplication.shared.setActivationPolicy(NSApplication.ActivationPolicy.regular)
self.window!.makeKeyAndOrderFront(nil)
NSApp.activate(ignoringOtherApps: true)
}
}
在Swift 5中:
func toggleApp(sender: AnyObject) {
if self.window.visible {
self.window.orderOut(window)
NSApplication.shared.setActivationPolicy(NSApplication.ActivationPolicy.accessory)
} else {
NSApplication.shared.setActivationPolicy(NSApplication.ActivationPolicy.regular)
self.window!.makeKeyAndOrderFront(nil)
NSApp.activate(ignoringOtherApps: true)
}
}