Cmd +单击以移动状态项

时间:2012-07-03 21:51:40

标签: objective-c macos nsstatusitem

内置的电池,Wi-Fi,声音等,Apple提供的状态项,可以通过使用cmd +点击并拖动拖动到菜单上的任何位置:

如何在我自己的状态项中支持类似功能?

1 个答案:

答案 0 :(得分:11)

有两种方法可以在菜单栏的右侧获取菜单。官方支持的方式是在您的应用中创建NSStatusItem。其他方法是创建NSMenuExtra。您已经注意到一个区别:NSStatusItem菜单已固定到位,而菜单附加功能可以通过cmd拖动来移动。

另一个主要区别以及第三方菜单附加功能未得到官方支持的原因是,与状态项(作为单独的应用程序运行)不同,菜单附加功能会加载到SystemUIServer进程的地址空间中。这意味着如果他们发生混乱并崩溃,他们就可以取消用户界面。

您可以在/System/Library/CoreServices/Menu Extras处看到系统上安装的菜单附加功能。可能仍然可以创建自己的操作系统并加载操作系统,但如果您尝试发送结果,则会遇到问题。最好去bugreport.apple.com,让他们知道NSStatusItems应该是可拖动的。

Wikipedia has more info on Menu Extras,包括指向tutorial on building your own的一些链接。