Я создаю всплывающее меню программно и обновляю его с методом делегата menuNeedsUpdate: (NSMenu *) меню и затем отображение его с помощью метода popUpMenuPositioningItem:nil atLocation:mouseLoc inView:nil.
Это хорошо работает, что касается управления мышью. Однако при использовании клавиатуры (буквы или клавиши со стрелками), я заметил, что она называет menuNeedsUpdate: для всего, главного меню и подменю. Это довольно неэффективно и делает использование меню через клавиатуру вялым.
Почему это происходит? Какой-либо способ обойти его или остановить его?
Я бы попробовал реализовать menuHasKeyEquivalent:forEvent:target:action:
на вашем делегате (и всегда возвращать NO
, если вы знаете, что ничто в меню не имеет эквивалента клавиши).