带有菜单栏但没有 Dock 图标/切换菜单的 Cocoa 应用程序

Posted

技术标签:

【中文标题】带有菜单栏但没有 Dock 图标/切换菜单的 Cocoa 应用程序【英文标题】:Cocoa Application with Menubar but no Dock Icon / switch menu 【发布时间】:2010-04-21 12:58:44 【问题描述】:

这是“如何从使用停靠图标运行切换到没有停靠图标运行”的又一个问题。我不想要停靠图标,但我确实想要一个菜单​​栏,当应用程序运行时在前面。这可能吗?

在 plist 中运行 LSUIElement 设置为 1 的应用程序将启动没有停靠图标的应用程序,不会显示在命令选项卡开关列表中并且没有菜单

您可以从该模式切换到“正常”模式,从 10.2 开始通过 SetSystemModeUI 和从 10.6 开始通过 NSApplication setApplicationActivationPolicy 打开所有三个模式,但至关重要的是,没有办法回到以前的模式(见图)。

因此,解决此问题的一种方法是使用 LSUIElement = 1 启动,然后在应用程序获得焦点时激活菜单栏,并在失去焦点的应用程序上停用它。唉,我找不到这样做的方法.

有人可以帮忙吗?

最好的问候,

弗兰克

【问题讨论】:

【参考方案1】:

我也在寻找解决方案,但结果非常简单: 在项目文件Info.plist中需要添加key

"应用程序是代理 (UIElement)" = YES

【讨论】:

事实上你的回答是对的,你可以拥有一个完整的 UI 应用程序,只能从菜单栏访问,而不是从停靠图标访问。【参考方案2】:

很遗憾,这是不可能的。您只能在一个方向(从后台应用程序到前台应用程序)转换进程类型,而不能在另一个方向上转换。

【讨论】:

我有一个在 10.9 上完全可以做到这一点的应用程序,但我发现它有问题。将应用程序转换到前面后,菜单栏(文件、编辑、视图等)有时可以工作,有时不能。您必须选择另一个应用程序,然后返回到您的应用程序才能显示菜单栏。间歇性的。最佳做法可能是不使用转换技巧。

以上是关于带有菜单栏但没有 Dock 图标/切换菜单的 Cocoa 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js:切换汉堡菜单图标

苹果电脑怎么使用

制作一个复选框来打开和关闭 Dock 图标

在 OS X 的停靠栏上下文菜单中显示图标?

如何设置MacOS的菜单栏和dock栏的透明度,如何设置为不透明

滚动上带有隐藏导航栏的页面菜单