我想在右键单击 NSTableView 中的项目时显示 NSWindow,类似于右键单击对象时在 Interface Builder 中显示可用插座的方式:
不幸的是,您只能使用 NSMenu 子类作为菜单属性。我也没有找到通知右键单击的 NSTableView 的委托方法。
我能够将 NSTableView 子类化并实现rightMouseDown:
并rightMouseUp:
收到有关这些事件的通知,但是如果我将行单元格的菜单属性设置为nil
,即使我调用了超级实现,它们也不会在右键单击时突出显示):
- (void)rightMouseDown:(NSEvent *)theEvent {
[super rightMouseDown:theEvent];
NSPoint eventLocation = [theEvent locationInWindow];
eventLocation = [self convertPoint:eventLocation fromView:nil];
NSInteger rowIndex = [self rowAtPoint:eventLocation];
NSLog(@"Right clicked at row index %d", rowIndex);
}
我想在下图中具有突出显示效果,但显示一个窗口而不是上下文菜单: