NSPopUpButton: события из отслеживания меню?

Можно ли обнаружить действия, которые сообщают моему контроллеру, когда пользователь перемещает (или иным образом просматривает) элементы в NSPopUpButton? Кажется, я получаю уведомление только о новом выборе, и я хотел бы получать уведомления, когда пользователь прокручивает любой элемент в меню.

Благодарность

Том


person TomH    schedule 26.01.2010    source источник


Ответы (1)


Вы можете установить свой контроллер в качестве делегата меню NSPopUpButton. После этого вам будут отправлены -menu:willHighlightItem: сообщения делегата по мере перемещения мыши по меню.

- (void)awakeFromNib
{
    [[popupButton menu] setDelegate:self];
}

- (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item
{
    if(menu == [popupButton menu])
    {
        //do something
    }
}
person Rob Keniger    schedule 26.01.2010
comment
Я думаю, было бы лучше просто проверить, являются ли они одним и тем же меню (menu == [popUpButton menu]). Предполагая, что NSMenu реализует более глубокое значение isEqual:, вы действительно хотите выполнять действие, когда пользователь выделяет элементы в несвязанном меню, которое имеет «одинаковые» (для некоторого определения это) элементы меню ? - person Peter Hosey; 27.01.2010
comment
Это справедливое замечание. Я изменил код, чтобы использовать прямое сравнение указателей. - person Rob Keniger; 27.01.2010
comment
Очень круто. Большое спасибо, что нашли время ответить. Я попробую!! - person TomH; 27.01.2010