如何在将状态推送到NSUndoManager后立即强制NSDocument isDocumentEdited YES

时间:2014-01-29 11:55:46

标签: cocoa nsdocument nsundomanager

我正在将NSDocument与其NSUndoManager结合使用。 我注意到在将可撤销操作推送到UndoManager时设置NSDocument updateChangeCount有一个延迟:

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

如果在此调用之前未修改文档,则显示“0”。 似乎undomanager稍后在此方法退出后调用updateChangeCount。 有没有办法强制undomanager更新文档updateChangeCount? 我可以手动拨打

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

但我不知道在与undomanager的互动中是否安全。

1 个答案:

答案 0 :(得分:2)

NSUndoManager将事件自动撤消,直到当前事件结束,然后关闭当前组并对其进行处理。

我不确定你会如何解决这个问题,因为我不确定你为什么要立即改变isDocumentEdited