This answer описывает, как установить шрифт и, следовательно, цвет шрифта NSMenuItem.Установите цвет шрифта NSMenuItem, если он выделен
Чтобы предупредить пользователя о проблеме с выбранным элементом во всплывающем меню, я установил цвет в красный цвет. Отлично работает, за исключением случаев, когда элемент выделен, фон становится синим, а мой красный-на-синем трудно читать и выглядит паршиво. Шрифт регулярных пунктов меню изменяется с черного на белый. Я хотел бы, чтобы мой измененный пункт меню менял цвет шрифта, когда он был выделен таким образом.
Это динамическое меню. Я устанавливаю шрифт/цвет при создании элементов в -menuNeedsUpdate. Конечно, [NSMenuItem isHighlighted] возвращает NO там, потому что элемент только что был создан.
Я также попытался добавить наблюдателя на NSMenuDidBeginTrackingNotification и NSMenuDidBeginTrackingNotification, но это не помогает, потому что эти два уведомления всегда получали в парах, 5:57 пара каждый раз, когда я нажимаю на меню, а затем, после отслеживания закончился приходит еще один -menuNeedsUpdate: он снова создает все с нуля. Я не уверен, что это означает, когда меню «отслеживание», но, видимо, это не то, что я хочу.
Я думал, что спросить, если кто-нибудь когда-нибудь придумать хороший ответ на это, прежде чем я пойти и сделать что-то действительно kludgey как these guys did for a similar NSMenuItem quandary.