在 NSPopupButton 菜单中使用与主菜单中相同的 keyEquivalent

Use same keyEquivalent in NSPopupButton menu as in Main menu

我有一个 NSPopUpButton,其中有几个菜单项向一些主菜单项公开了相同的功能。这些是与用户当前上下文最相关的操作。

为了表明这些项目也有 keyEquivalents(快捷方式),我想将它们的 keyEquivalents 设置为与主菜单中的项目相同的键。

不幸的是,这似乎不起作用,因为冲突的项目现在已在主菜单中删除了它们的 keyEquivalent(大概由 AppKit 自动删除)。

是否可以在 NSPopUpButton 菜单中显示相同的 keyEquivalent

通常上下文菜单不是显示快捷方式信息的最合乎逻辑的地方。然而,如果你真的想要这个,那么最好的/可能唯一可行的选择是重用你想在 NSPopUpButton 中显示的主菜单中的菜单,如下所示:

myPopUpButton.menu = (NSApp.delegate as! AppDelegate).myMenu

在此示例中,myMenu 是应用程序主菜单的 NSMenu 项之一的 @IBOutlet

如果您想在弹出窗口中显示稍微不同的菜单,那么您可以实现 NSMenuDelegatemenuWillOpen 来动态隐藏或添加菜单项。