如何在Xcode和Interface Builder中向menulet添加右键单击选项?

时间:2011-06-11 16:56:26

标签: objective-c xcode cocoa interface-builder

我正在尝试在左键单击和右键单击时使用不同的菜单(以及将来可能的组合,如按住Ctrl键,选项单击或命令单击)。

现在我有一个带有statusMenu的menulet,它在左侧和右侧打开时打开。 statusMenu中有五个选项:一个执行项,三个首选项设置项和一个退出项。

我想将这种行为分开,因为menulet被设计成一个小技巧。左键单击它应该执行该功能,右键单击应该完全按原样打开菜单(包括执行)。

任何想法如何做到这一点?

现在,我通过statusMenus

通常从代码中调用statusMenu
[statusItem setMenu:statusMenu];

1 个答案:

答案 0 :(得分:3)

为此,您需要手动显示菜单。一种方法是创建自定义视图并将其放在状态项中,然后使用mouseUp:rightMouseUp:事件处理程序执行操作。您还可以从事件中获取修改键以执行其他操作。也可以使用状态项的内置目标 - 动作机制,并从NSEvent类方法+pressedMouseButtons+modifierFlags获取信息。无论哪种方式,您都可以使用NSStatusItem的-popUpStatusItemMenu:方法显示菜单。

有关使用自定义视图处理左右单击的示例,请参阅my answer to this question