问题描述
|
我正在尝试创建一个菜单项,该菜单项在左键单击和右键单击(以及将来的组合,如按Control键单击,按Option键单击或按Command键单击)时会有所不同。
现在,我有一个附加了statusMenu的menulet,可在左击和右键单击时打开。 status菜单中有五个选项:一个执行项,三个首选项设置项和一个退出项。
我想在某种程度上区分行为,因为小菜单被设计为一个小技巧。左键单击应执行该功能,右键单击应完全按原样打开菜单(包括执行)。
任何想法如何做到这一点?
现在,我像过去的statusMenus一样,从代码中调用statusMenu
[statusItem setMenu:statusMenu];
解决方法
为此,您将需要手动显示菜单。一种方法是创建一个自定义视图,并将其放在状态项中,然后使用
mouseUp:
和rightMouseUp:
事件处理程序执行操作。您还可以从事件中获取修饰键,以执行其他操作。也可以使用状态项的内置目标动作机制,并从NSEvent类方法+pressedMouseButtons
和+modifierFlags
获取信息。无论哪种方式,您都可以使用NSStatusItem的-popUpStatusItemMenu:
方法显示菜单。
有关使用自定义视图处理左右点击的示例,请参见我对这个问题的回答。