右键单击NSBrowser
视图中的项目时,选择不会改变。相反,单击的项目会获得一个框架并打开一个上下文菜单。选定的项目和右键单击的项目是两个不同的东西。
在Finder(浏览器视图)中,上下文菜单中的操作对用户右键单击的项目进行操作,这是我所期望的。如果我对自定义控件执行相同NSBrowser
操作,则会将操作应用于所选项目。
我附加了一个空NSMenu
来NSBrowser.menu
获取服务菜单。从 查询时,有NSBrowser
's clickedRow
/clickedColumn
属性会产生有效值[NSMenuDelegate menuWillOpen]
,但这对系统生成的 Services 菜单项没有帮助。
如何使上下文菜单对右键单击的项目进行操作?
编辑 2017-10-29
我将 NSBrowser 子类化为拖放支持。这就是添加上下文菜单的方式。它是空NSMenu
的,会自动添加服务菜单。
- (void) awakeFromNib
{
NSMenu *m = [[[NSMenu alloc] init] autorelease];
m.delegate = self;
self.menu = m;
}