如何在NSTableView中将自定义视图单元格放在表格行的上方?

Col*_*iot 10 cocoa objective-c

当我使用自定义视图作为基于视图的NSTableView的单元格时,自定义视图稍微低于表格行.当我单击它时,不是影响元素(例如文本字段)自定义视图,而是选择(并突出显示)表格行.我必须重新点击才能选择文本字段.

- (NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    NSLog(@"We are creating views!");
    NSTableCellView *newView;
    newView = [tableView makeViewWithIdentifier:@"PostCell" owner:self];


    NSTextField *newTextField = [[NSTextField alloc] init];
    [newView addSubview:newTextField];

    return newView;
}
Run Code Online (Sandbox Code Playgroud)

突出前方

当我根据NSTableView - 禁用行选择禁用行选择时,没有选择.

- (BOOL)selectionShouldChangeInTableView:(NSTableView *)tableView {
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

但我仍然无法直接选择文本字段.更糟糕的是,我甚至无法使用鼠标选择它.只tab在键盘上工作.

无法选择

似乎有一些东西在它上面.但它是界面构建器中显示的"表列"吗?或者是其他东西?

我怎样才能解决这个问题?

Ken*_*ses 4

使用 的自定义子类NSTableView并覆盖-validateProposedFirstResponder:forEvent:以返回YES

请参阅编写基于视图的表视图代码的 Apple 工程师的这篇博客文章。