我将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/