右键单击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;
}