2014-01-29 52 views
1

我正在使用NSDocument與其NSUndoManager組合。 我注意到有推可撤消的操作到的UndoManager時設置NSDocument updateChangeCount延遲:如何強制NSDocument isDocumentEdited YES將狀態推後NSUndoManager

[undoManager registerUndoWithTarget:self selector:@selector(applyUndoState:) object:state]; 
NSLog(@"Document.isEdited: %d", [self isDocumentEdited]); 

這將顯示爲「0」,如果這個文件調用之前沒有被修改。 在此方法退出後的一段時間,似乎看起來非人調用updateChangeCount。 有沒有辦法強制undomanager更新文檔updateChangeCount? 我可以手動調用

if (![self isDocumentEdited]) 
    [self updateChangeCount:NSChangeDone]; 

,但我不知道這是否會與UndoManager的交互安全。

+1

爲什麼你在這個時候需要編輯狀態的文檔? – Volker

+0

因爲我想在用戶點擊導航樹視圖時在無模式編輯器中提交更改。在這次調用之後,文檔需要立即保存,然後runloop進入下一個事件。我已經添加了周圍提到的工作,它似乎工作正常, –

回答

2

NSUndoManager自動將撤消事件分組,直到當前事件結束,關閉當前組並處理它。

我不確定你會如何解決這個問題,因爲我不確定你爲什麼要立即更改isDocumentEdited

+0

工作周圍似乎工作正常,我可以看到沒有問題在撤消/重做,也沒有文檔需要保存狀態。 –

相關問題