2010-07-20 24 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