我试图创建一个应该只在状态栏中可见的应用程序,并且在按下NSStatusItem菜单选项之前没有窗口。所以我有一个应该打开“约”
[[NSApplication sharedApplication] orderFrontStandardAboutPanel:self];
但是如果我将Application is agent设置为YES,则没有任何显示。如果我将其更改为NO它可以工作,但我得到一个应用程序窗口和所有我不想看到的菜单选项。
有什么想法吗?
亲切的问候
答案 0 :(得分:7)
几天前开始使用新应用程序,我想出来了。
[NSApp activateIgnoringOtherApps:YES]
诀窍!
答案 1 :(得分:0)
你有没看过这个网站:
答案 2 :(得分:0)
我认为最灵活的方法是您应该自己控制主窗口而不是情节提要。
应用程序完成启动后,可以根据以下应用程序策略显示主窗口或不显示主窗口:
switch AppDefaults.shared.applicationRunMode {
case .menuAndDock:
_ = ApplicationMode.toggleDock(show: true)
MainWindowController.shared.window?.makeKeyAndOrderFront(nil)
case .menuOnly:
_ = ApplicationMode.toggleDock(show: false)
_ = MainWindowController.shared.window
default:
MainWindowController.shared.window?.makeKeyAndOrderFront(nil)
}
toggleDock
的实际作用是更改应用程序显示或不显示的方式。
// Get transform state.
let transformState = show ?
ProcessApplicationTransformState(kProcessTransformToForegroundApplication)
: ProcessApplicationTransformState(kProcessTransformToUIElementApplication)
// Show / hide dock icon.
var psn = ProcessSerialNumber(highLongOfPSN: 0, lowLongOfPSN: UInt32(kCurrentProcess))
let transformStatus: OSStatus = TransformProcessType(&psn, transformState)
return transformStatus == 0
info.plist中的和UIElement仅使您的Cocoa App能够不显示UI。