相关疑难解决方法(0)

macOS菜单栏应用程序:主菜单未显示

我有一个状态栏应用程序,它在菜单栏中运行.因此,我设置Application is agent (UIElement)trueinfo.plst.这导致我的应用程序没有停靠图标和菜单栏.

但是,我还有一个用户可以从状态栏菜单打开的首选项窗口.这是我打开它的方式:

if (!NSApp.setActivationPolicy(.regular)) {
    print("unable to set regular activation policy")
}
NSApp.activate(ignoringOtherApps: true)
if let window = preferencesWindowController.window {
    window.makeKeyAndOrderFront(nil)
}
Run Code Online (Sandbox Code Playgroud)

该窗口按预期显示,但应用程序的主菜单栏包含文件,编辑等,但未显示.只有当我点击另一个应用程序并返回我的应用程序时,才会显示菜单栏.

我注意到,如果我更改info.plstto中的值false并使用NSApp.setActivationPolicy(.accessory)in applicationDidFinishLaunching(),则它具有相同的结果.但是,如果我在调用NSApp.setActivationPolicy(.accessory)后几毫秒调用一个计时器applicationDidFinishLaunching(),它就可以工作,并且主菜单正在按预期显示.然而,这有副作用,即应用程序图标在停靠栏中弹出几秒钟(直到计时器被触发),这不是一个很好的用户体验.

有谁知道我还能尝试什么?切换活动应用时发生了什么,我在代码中没做什么?

我在macOS 10.12.2(16C67)上使用版本8.2.1(8C1002)

谢谢!

macos cocoa menubar background-process swift

9
推荐指数
1
解决办法
822
查看次数

标签 统计

background-process ×1

cocoa ×1

macos ×1

menubar ×1

swift ×1