cocoa - 使用 NSMenu 以编程方式获取 Cocoa 菜单栏,如何获取标准项目“服务”、“隐藏应用程序”、“隐藏其他”、“显示全部”等
问题描述
在脱碳方面,我现在开始使用NSMenu
.
Carbon 似乎非常适合将标准项目添加到应用程序菜单:Services,Hide app,Hide Others,Show All,Quit app,甚至使用系统偏好设置的语言和区域中用户的首选语言设置添加它们,所以用德语Hide Others添加为Andere ausblenden。
我只需要添加About和Preferences项目。
但是,似乎在 Cocoa 中我必须自己添加这些标准项,但是我怎样才能找出在用户的首选语言中调用的Hide Others呢?
可可相当于CreateStandardWindowMenu
什么?
解决方案
如果您让 Xcode 创建一个新的 Cocoa 应用程序项目,它将生成一个您可以检查的 MainMenu.xib。看起来“隐藏其他人”、“退出”等只是分配了特定操作的菜单项,但“服务”似乎有一些特殊的魔力。即使您不想从笔尖呈现整个菜单栏,您也可以从笔尖加载它,然后挑选某些菜单项并将它们移动到另一个菜单,重命名它们或其他方式。尽管我不确定我是否了解您要完成的工作。即使您不想本地化,也可以使用笔尖。
为了解决您修改后的问题的最后一部分,该NSApplication
对象具有一个windowsMenu
属性,即您可以创建一个菜单并说[NSApp setWindowsMenu: myMenu]
. 但我不知道这是否会添加诸如“将所有内容放在前面”之类的项目,或者您是否必须自己创建这些项目。
推荐阅读
- javascript - jquery中是否有任何替代函数,如sql server中的NULLIF()?
- r - 管道 df 到 mutate + 子字符串表达式
- swift - AVPlayer SwiftUI 检查状态 (MVVM)
- c - 如果发生多个渲染器切换,SDL_SetRenderTarget() 会挂起一段时间
- html - 绝对定位没有按我的意愿工作
- python - 如何使用python重复片段的部分n次
- linux - 如果所有线程都访问同一个函数,我们是否需要使用信号量?
- java - 在 ExecutorService 中没有得到想要的结果
- excel - 为什么我的 VBA 代码在 Windows 7 中有效,但在 10 中无效?如何解决此错误?
- java - Hibernate 单表继承 - 作为属性嵌套在子类中的基类抛出 PropertyAccessException