如何在NSMenuItem中绘制我自己的密钥等价物?

时间:2009-08-23 15:52:10

标签: cocoa user-interface nsmenuitem

我需要这个所有者在我自己的代码中绘制tab completition密钥等价物。就像TextMate在this example中所做的那样。

我听说菜单图是基于碳的,但我不希望它是如此巨大的黑客。

但无论我尝试什么,无论我在哪里,我都找不到线索。

编辑: 我愿意接受基于碳的答案,只是在版本> = 10.4

上运行的任何东西

2 个答案:

答案 0 :(得分:3)

即使在10.6的情况下,菜单栏仍以碳为基础。在Carbon级别,有一个API(见下文),它允许您在menuitem上设置您想要的任何键等价物,无论该应用程序是否实际映射该等效于menuitem的键。换句话说,Carbon允许您独立于行为调整菜单项的显示。使用此API,您可以设置希望menuitem显示的任何键盘快捷键。

不幸的是,这个API的文档似乎已不复存在。但您仍然可以读取头文件。我相信您想要的API位于/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/Headers/Menus.h。我知道HIToolbox不是64位,但我怀疑菜单API仍然是,因为Cocoa菜单仍然基于Carbon菜单。

答案 1 :(得分:2)

实现此目的的一种方法是自己绘制项目。我不确定是否有办法覆盖等效键上的绘图。看一下MenuItemView示例代码。