当 NSMenu/NSMenuItem 被鼠标悬停时填充子菜单?

问题描述

在 MacOS 上,我有一个包含动态内容的子菜单,不断重建会很昂贵。如果当用户将鼠标移到父项上时——在实际显示菜单之前——我可以动态构建子菜单内容 (NSMenuItems),那就太好了。

我的菜单的简化层次结构如下:

Application File Edit View Tools Window Help

包含我的子菜单菜单在工具中:

Tools
   Foo 1
   Foo 2
   Foo 3 > (leads to submenu)

菜单包含拼写检查建议。

提醒一下,Interface Builder 是这样创建菜单的:

Tools (NSMenuItem)
     NSMenu
       Foo 1 (NSMenuItem)
       Foo 2 (NSMenuItem)
       Foo 3 > (NSMenuItem)
            NSMenu
                 First spellcheck choice (NSMenuItem)
                 Second spellcheck choice (NSMenuItem)
                 Third spellcheck choice (NSMenuItem)

我希望只在用户将鼠标移过 Foo 3 时才重建 Foo 3 子菜单。有人成功解决了这个问题吗?

编辑:在测试建议后,不会为位于 Foo 3 下方的子菜单的 NSMenu 调用 NSMenuDelegate 方法。这使我确定最佳解决方案是使用 F00 3 的菜单验证方法,该方法(不幸地)被调用任何时候从菜单栏中选择“工具”菜单

管理员注意:为什么这个问题会被标记为“关闭”?这是一个完全合理的问题,以大多数 macOS 工程师很容易理解的方式提出。为什么 SO 通常比过去几年对合法问题更不友好?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...