关于应用程序的“关于”窗口,UIElement是否设置为YES?

9
我正在尝试创建一个应用程序,该应用程序只在状态栏中可见,直到您按下NSStatusItem菜单选项才会显示窗口。因此,我有一个应该打开“关于”的选项。
[[NSApplication sharedApplication] orderFrontStandardAboutPanel:self];

但是,如果我将“应用程序代理”设置为YES,则什么也不会显示。如果我将其更改为NO,则可以正常工作,但我会看到一个应用程序窗口和所有菜单选项,而我不想看到它们。

有什么建议吗?

谢谢。

2个回答

8

几天前开始了一个新的应用程序,我成功解决了问题。

[NSApp activateIgnoringOtherApps:YES]

做到了!

3
我认为最灵活的方式是您应该自己控制主窗口,而不是使用故事板。
当应用程序完成启动时,您可以根据应用程序策略显示或隐藏主窗口,如下所示: "最初的回答"
 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 应用程序能够隐藏用户界面。

最初的回答

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接