У меня есть NSMenu
, содержащий NSMenuItems
с пользовательскими видами. Я хочу, чтобы при нажатии кнопки alt пункты меню меняли часть их взгляда (через их вид). Я нашел setAlternative
в документах NSMenuItem
, однако на практике я мог только получить его для работы с NSMenuItems
без пользовательских представлений. Как только я установлю пользовательский вид, все пункты меню будут отображаться. Кроме того, я пытался получать события нажатия клавиш, когда меню было открыто. Из-за другого цикла запуска NSApplication's sendEvent:
не принимает события до закрытия меню. Поэтому я не могу просто перехватить событие, входящее в него.Альтернативные элементы в NSMenu
Кто-нибудь знает, как я могу получить уведомление, будь то посредством делегирования или подкласса, когда нажата клавиша alt при открытии меню?
Мне нужно, чтобы это произошло, когда открыто меню. Например, не когда меню открывается, но пока оно открыто, если пользователь делает ключ с помощью alt, тогда мне нужно его об этом уведомлять. –
Я обновил ответ с информацией о методе '-flagsChanged'. –
I overrode - (BOOL) принимает FirstResponder и - (BOOL) становится FirstResponder, чтобы возвращать YES в пользовательских классах просмотра моих NSMenuItems. Затем я реализовал flagsChanged :. Я сделал первый ответ первого элемента меню, когда menuNeedsUpdate: Тем не менее, flagsChanged: не получает вызов еще. Я также попробовал, чтобы он стал ответчиком после задержки 0,5 (в режиме цикла событий отслеживания), если каким-то образом меню украло его. Это тоже не сработало. Есть идеи? –