0

所以问题是:我将一些项目放入编辑器区域,它会创建一个撤消分组......在幕后,因为删除项目的整个过程实际上是一个任务集合。如果我随后删除任务,我可以选择撤消删除。

如果我执行此撤消操作,我会在控制台中收到错误消息:_endUndoGroupRemovingIfEmpty:: NSUndoManager 0x343f5a0 处于无效状态,调用 endUndoGrouping 时没有匹配的开始

它确实将所有项目返回到视图中,但是......从这一点开始,我的撤消堆栈被搞砸了并且没有做正确的事情。从现在开始,REDO 甚至不再起作用。

我也试过这个,只从工作流程中删除一个项目......然后撤消删除......仍然抛出错误。

所以有两个问题:1.为什么会发生错误。2. 为什么我的重做功能完全不正确?

谢谢你的帮助

4

1 回答 1

0

问题是我在 -undoManagerDidUndoOrRedo... 中是 willChange 和 didChange 一些 KVO 值,这是在撤消管理器完成撤消操作时触发的通知,在该通知内部(撤消系统状态内部)。 ..所以我错误地创建了一些嵌套更改...这弄乱了我的撤消堆栈。

于 2010-08-25T18:37:18.443 回答