2011-08-03 56 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

相關問題