我将 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];
但我不知道与撤消管理器交互是否安全。
最佳答案
NSUndoManager 自动对撤消事件进行分组,直到当前事件结束,此时它会关闭当前组并对其进行处理。
我不确定您将如何解决这个问题,因为我不确定您为什么希望 isDocumentEdited
立即更改。
关于cocoa - 如何在将状态推送到 NSUndoManager 后立即强制 NSDocument isDocumentEdited YES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21430409/