【问题标题】:NSMenuItem Key Equivalent not working when menu is hidden隐藏菜单时,NSMenuItem Key Equivalent 不起作用
【发布时间】:2012-11-30 12:27:31
【问题描述】:

我在 Interface Builder 中有一个 NSMenu,它连接到 NSTableViewmenu 插座。

我想为这个菜单中的项目分配关键等效项,这样用户就不必右键单击,但除非菜单可见(失败),否则它们不起作用。

当菜单不可见时,有什么方法可以让等效键起作用?

【问题讨论】:

  • 你能把项目放在应用程序的菜单栏中吗?
  • 我宁愿不这样做,因为这些项目在上下文菜单上对用户来说更直观。

标签: cocoa interface-builder keyboard-shortcuts nsmenuitem


【解决方案1】:

您可以将菜单项放在应用程序的菜单栏和上下文菜单中。即使上下文菜单不可见,等效键也将起作用。

【讨论】:

  • 好主意 - 跳出框框思考。除非进行修复,否则我认为这种解决方法会起作用。谢谢
  • 这不是最好的解决方案,就我而言,我有很多窗口,我可以在窗口 A 中触发菜单项事件,但不能在窗口 B 中触发
  • 这是在一个地方为操作定义用户界面的好方法,然后确保您的响应者链正确处理所有内容。
  • 不幸的是,您不能使用 NSMenu 的单个实例或特定的 NSMenuItems - 它们需要复制。
【解决方案2】:

看起来 macOS 10.13 SDK (High Sierra) 在 NSMenuItem 上有一个新属性 allowsKeyEquivalentWhenHidden

【讨论】:

  • allowsKeyEquivalentWhenHidden 对我不起作用。好像没什么效果。
  • 'hidden' 并不意味着整个菜单当前在屏幕上不可见,'hidden' 是 NSMenuItem 的一个命名状态。
  • 我必须在顶部菜单项的属性检查器中勾选Allowed When Hidden。即我有一个名为“显示”的应用程序菜单项,其中包含“播放”和“停止”项目。我必须勾选“显示”菜单项以及“播放”和“停止”项中的选项。
猜你喜欢
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多