弹出菜单要求每次按键时更新所有菜单

发布于 2024-09-10 20:18:47 字数 277 浏览 4 评论 0原文

我正在以编程方式创建一个弹出菜单,并使用委托方法 menuNeedsUpdate:(NSMenu *) 菜单更新它,然后使用 popUpMenuPositioningItem:nil atLocation:mouseLoc inView:nil 方法显示它。

就鼠标控制而言,它工作得很好。但是,当使用键盘(字母或箭头键)时,我注意到它为所有内容(根菜单和子菜单)调用 menuNeedsUpdate: 。这是相当低效的并且使得通过键盘使用菜单变得缓慢。

为什么会发生这种情况?有什么办法可以规避或阻止它吗?

I'm creating a pop up menu programmatically and updating it with the delegate method menuNeedsUpdate:(NSMenu *) menu and then displaying it using the popUpMenuPositioningItem:nil atLocation:mouseLoc inView:nil method.

It works fine as far as mouse control is concerned. However, when using the keyboard (letters or arrow keys), I've noticed that it calls menuNeedsUpdate: for everything, the root menu and submenus. This is quite inefficient and makes using the menu via the keyboard sluggish.

Why is this happening? Any way to circumvent it or stop it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

徒留西风 2024-09-17 20:18:48

我会尝试在您的委托上实现 menuHasKeyEquivalent:forEvent:target:action: (如果您知道菜单中没有任何内容具有等效键,则始终返回 NO)。

I would try implementing menuHasKeyEquivalent:forEvent:target:action: on your delegate (and always returning NO if you know nothing in the menu has a key equivalent).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文