我正在以编程方式创建一个弹出菜单,并使用委托方法menuNeedsUpdate:(NSMenu *)菜单进行更新,然后使用popUpMenuPositioningItem显示它:nil atLocation:mouseLoc inView:nil方法。
就鼠标控制而言,它工作得很好。但是,当使用键盘(字母或箭头键)时,我注意到它调用menuNeedsUpdate:对于所有内容,根菜单和子菜单。这是非常低效的,并且通过键盘缓慢使用菜单。
为什么会这样?有什么方法可以绕过它或阻止它吗?
答案 0 :(得分:1)
我会尝试在您的委托上实施menuHasKeyEquivalent:forEvent:target:action:
(并且如果您在菜单中没有任何内容具有等效的密钥,则始终返回NO
。)