2010-07-20 40 views
1

我创建了一个弹出菜单以编程方式并使用委托方法menuNeedsUpdate更新它:(NSMenu *)菜单,然后使用popUpMenuPositioningItem显示它:nil atLocation:mouseLoc inView :无方法。弹出菜单呼吁更新每个按键上的所有菜单

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

这是怎么发生的?任何方式来规避或阻止它?

回答

1

我会尝试在您的委托上执行menuHasKeyEquivalent:forEvent:target:action:(如果您在菜单中没有任何关键字具有等同关键字,则始终返回NO)。

+0

辉煌。这解决了它。有趣的是,为了调试目的,我在menuHasKeyEquivalent:forEvent:target:action:方法中放置了一个NSLog,以查看它是否被调用。那么,它会被称为我想,因为它现在工作正常(不会填充每个按键上的整个菜单),但NSLog不出于某种原因。 – the979kid 2010-07-21 06:37:39

+0

奇怪,但我很高兴它的工作! – Wevah 2010-07-22 21:23:57