弹出菜单要求每次按键时更新所有菜单
我正在以编程方式创建一个弹出菜单,并使用委托方法 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我会尝试在您的委托上实现
menuHasKeyEquivalent:forEvent:target:action:
(如果您知道菜单中没有任何内容具有等效键,则始终返回NO
)。I would try implementing
menuHasKeyEquivalent:forEvent:target:action:
on your delegate (and always returningNO
if you know nothing in the menu has a key equivalent).