当我使用自定义视图作为基于视图的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; }
当我根据NSTableView – Disable Row Selection禁用行选择时,没有选择.
- (BOOL)selectionShouldChangeInTableView:(NSTableView *)tableView { return NO; }
但是我仍然无法直接选择文本字段.更糟糕的是,我甚至不能使用鼠标选择它.键盘上只有标签工作.
似乎有一些以上的东西.但是,在界面构建器中显示的“表列”或者是其他东西?
如何解决这个问题?
解决方法
使用NSTableView的自定义子类和override -validateProposedFirstResponder:forEvent:返回YES.
请参阅撰写基于视图的表视图代码的Apple工程师的this blog entry.