Cocoa NSPoupButton:菜单跟踪中的事件?

Cocoa NSPoupButton:菜单跟踪中的事件?,cocoa,nspopupbutton,Cocoa,Nspopupbutton,当用户在NSPopUpButton中移动(或阅读)项目时,是否可以检测到告知我的控制器的操作?我似乎只在新选择时收到通知,我希望在用户滚动菜单中的任何项目时收到通知 - (void)awakeFromNib { [[popupButton menu] setDelegate:self]; } - (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item { if(menu == [popupButton men

当用户在NSPopUpButton中移动(或阅读)项目时,是否可以检测到告知我的控制器的操作?我似乎只在新选择时收到通知,我希望在用户滚动菜单中的任何项目时收到通知

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

- (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item
{
    if(menu == [popupButton menu])
    {
        //do something
    }
}
谢谢


tom

您可以将控制器设置为
nspoupbutton
菜单的代表。然后,当鼠标在菜单上移动时,将向您发送
-menu:willHighlightItem:
委派消息

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

- (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item
{
    if(menu == [popupButton menu])
    {
        //do something
    }
}

我认为最好只是测试它们是否是同一个菜单(
menu==[popUpButton menu]
)。假设NSMenu实现了
isEqual:
的更深层含义,那么当用户突出显示一个不相关菜单中恰好有“相同”(在某些定义中)菜单项的项目时,您真的想执行该操作吗?这是一个公平的观点。我修改了代码,使用了直接指针比较。非常酷。非常感谢您抽出时间回答。我要试一试!!