2011-08-03 57 views
1

我有一个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

回答

0

尝试抛弃这一切的东西,并用它试一下:当你想检查表是否当前正在编辑

,叫[tableView currentEditor];如果这是非零,正在编辑表格视图。如果它为零,则不会被编辑。那就是:

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

因此,而不是'如果(tableEditInProgress)回报;','做:如果([sensorTable currentEditor] =零!)\t回报;'呢? – Flyingdiver

+0

似乎这样做,谢谢! – Flyingdiver

+0

是的,没错。这应该确实有效。 – Enchilada

相关问题