我正在使用菜单项将列文本字段设置为可编辑。这就是我尝试过的,但根本没有回应(没有文字可编辑)。 (我已经记录,并且调用了该方法,并且textfield不为null。)
- (IBAction)setEditable:(id)sender
{
NSInteger selectedRow = [_tableView selectedRow];
NSInteger selectedColumn = [_tableView selectedColumn];
NSTableCellView *selectedCell = [_tableView viewAtColumn:selectedColumn row:selectedRow makeIfNecessary:NO];
[selectedCell.textField setEditable:YES];
}
这是否必须以另一种方式完成?文本字段在IB中也设置为可编辑,因此双击它可以工作,但我也想在上下文菜单中选择该项。
答案 0 :(得分:1)
文本字段是“可编辑的”,如果可能进行编辑,那就是让它集中注意力。 -setEditable:
不会启动编辑,这是您似乎认为的,因为您希望上面的代码与双击字段相同。它只是在文本字段上设置一个标志,用于控制文本字段允许执行的操作。您可以使用-isEditable
检查标记。
如果要启动编辑,则应使用以下文本字段作为窗口的第一个响应者:
if ([selectedCell.textField acceptsFirstResponder])
[_tableView.window makeFirstResponder:selectedCell.textField];
如果在窗口不是键时可以调用您的操作方法,您可能还想先[_tableView.window makeKeyAndOrderFront:self]
。