我将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互动是否安全。

最佳答案

NSUndoManager会自动对撤消事件进行分组,直到当前事件结束为止,在该事件中,它将关闭当前组并对其进行处理。

我不确定您将如何解决此问题,因为我不确定您为什么要isDocumentEdited立即更改。

关于cocoa - 将状态推送到NSUndoManager后如何立即强制NSDocument isDocumentEdited是,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21430409/

10-09 01:50