【问题标题】:NSPopUpButton: events from menu tracking?NSPopUpButton:来自菜单跟踪的事件?
【发布时间】:2010-01-27 14:04:45
【问题描述】:

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

谢谢

汤姆

【问题讨论】:

    标签: cocoa nspopupbutton


    【解决方案1】:

    您可以将您的控制器设置为NSPopUpButton 菜单的代理。然后,当鼠标在菜单上移动时,您将收到 -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: 的更深层含义,当用户突出显示恰好具有“相同”的不相关菜单中的项目时,您是否真的要执行该操作(对于 that 的某些定义)菜单项?
    • 这是一个公平的观点。我已经修改了代码以使用直接指针比较。
    • 非常酷。非常感谢您花时间回答。我试试看!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2013-06-17
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 2012-04-05
    相关资源
    最近更新 更多