【问题标题】:NSTableCellView setEditableNSTableCellView setEditable
【发布时间】:2014-11-25 20:19:41
【问题描述】:

我正在使用菜单项将列文本字段设置为可编辑。这是我尝试过的,但根本没有响应(没有文本可编辑)。 (我已经登录了,调用了方法,textfield不为空。)

- (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 中也设置为可编辑,因此可以通过双击它来工作,但我也想要上下文菜单中的选项。

【问题讨论】:

标签: xcode macos cocoa nstableview nsmenu


【解决方案1】:

一个文本字段是“可编辑的”,如果它是可能编辑它,那就是给它焦点。 -setEditable: 不会启动编辑,这似乎是您的想法,因为您希望上述代码与双击该字段的操作相同。它只是在文本字段上设置一个标志,该标志控制文本字段允许执行的操作。您可以使用-isEditable 来检查标志。

如果您想开始编辑,您应该使用以下方法将文本字段设置为窗口的第一响应者:

if ([selectedCell.textField acceptsFirstResponder])
    [_tableView.window makeFirstResponder:selectedCell.textField];

如果您的操作方法可能在窗口不是键时被调用,您可能还想先执行[_tableView.window makeKeyAndOrderFront:self]

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多