Cocoa 编辑时阻止对NSTableView的更新

Cocoa 编辑时阻止对NSTableView的更新,cocoa,nstableview,Cocoa,Nstableview,我有一个NSTableView,其中有一列可编辑字段。单元格编辑工作正常,我的委托例程得到更新,可以根据需要对其进行操作。问题是还有其他代码根据计时器或异步(套接字)输入更新表中的值。当编辑过程中发生更新事件时,更新将覆盖用户输入 我正在尝试使用委托方法阻止带有实例变量锁的更新: - (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor; { tableEditInProgre

我有一个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;   
}
只有当用户在更新之前在字段中实际键入新文本时,这似乎才起作用。我希望在用户在字段中获得编辑光标(双击字段内容)后立即阻止更新

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

短暂性脑缺血发作


试着扔掉所有这些东西,试试这个:

如果要检查表当前是否正在编辑,请调用
[tableView currentEditor]如果该值为非零,则正在编辑表格视图。如果为零,则不进行编辑。即:

BOOL tableEditInProgress = ([tableView currentEditor] != nil);
因此,不是
if(tableEditInProgress)返回
,如果([sensorTable currentEditor]!=nil)返回,则执行
而不是?