NSMenu以编程方式选择项目

cod*_*ody 9 cocoa objective-c nsmenu nsmenuitem nspopupbutton

我正在为应用程序编写一个插件 - 自定义键盘快捷键.我可以遍历其观点.我需要打开弹出菜单,选择其中的项目,然后打开其子菜单并在子菜单中选择一些项目.

现在我只能通过发送performClick:到相关NSPopUpButton元素来打开顶部弹出菜单.

如何以编程方式选择菜单中的项目并打开其子菜单?

我试过了:

  • 调用selectItem:上NSPopUpButton(以及相关的NSMenu).没有运气,我在文档中看到了一个概念:"请注意,当菜单跟踪用户输入时,菜单的程序化更改(如添加,删除或更改菜单上的项目)不会反映出来"
  • 发送键盘事件(使用此答案).没有运气 - 可能是因为我在发送这些事件时拿着一些钥匙
  • 通过Accessibility API查找有关如何操作的任何信息,但我找不到任何关于如何在当前应用程序(甚至任何其他应用程序,但使用Objective-C)上使用它的信息

LCC*_*LCC 8

使用该NSMenu方法- (void)performActionForItemAtIndex:(NSInteger)index

NSUInteger idx = [[[menuItem menu] itemArray] indexOfObject:menuItem];
[[menuItem menu] performActionForItemAtIndex:idx];
Run Code Online (Sandbox Code Playgroud)