编辑时阻止更新NSTableView

时间:2011-08-03 15:07:33

标签: cocoa nstableview

我有一个NSTableView,它有一列可编辑字段。单元格编辑工作正常,我的委托例程获取更新,并可根据需要对其进行操作。问题是,还有其他代码根据计时器或异步(套接字)输入更新表中的值。在编辑过程中发生更新事件时,更新将覆盖用户输入。

我正在尝试使用委托方法来阻止使用实例变量锁更新:

   - (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor;
{
    tableEditInProgress = YES;
    return YES;
}

- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
{
    tableEditInProgress = NO;
    return YES;
}

- (void)controlTextDidBeginEditing:(NSNotification *)aNotification
{
    tableEditInProgress = YES;
}

- (void)controlTextDidEndEditing:(NSNotification *)aNotification
{
    tableEditInProgress = NO;   
}

如果用户在更新发生之前在字段中实际键入新文本,这似乎才有效。我希望一旦用户在字段中获得编辑光标(双击字段内容),就会阻止更新。

我可能只是使用了错误的委托方法。

TIA

1 个答案:

答案 0 :(得分:0)

尝试抛弃所有这些东西,然后尝试这样做:

如果要检查当前是否正在编辑表,请调用[tableView currentEditor];如果这是非零,则正在编辑表视图。如果它是零,则不进行编辑。那就是:

BOOL tableEditInProgress = ([tableView currentEditor] != nil);