在我的 iOS 应用程序的界面中,我有明确的撤消和重做按钮(摇动撤消是一个非常重量级的操作,在这种情况下,撤消非常频繁地执行)。通常,我会使用 KVO 来观察 NSUndoManager 的 canUndo 和 canRedo 关键路径,并在通知进入时启用和禁用按钮。不幸的是,NSUndoManager 似乎对这些关键路径不兼容 KVO——或者至少,我我在通知方面看不到任何东西。
所以我的问题是:我如何让这个工作?我只是在 KVO 上做错了吗?(我已经检查了两次和三次,但总是有这种可能性)。还有另一种我没有想到的方法吗?(我虽然只是在每次运行循环旋转时检查 -canUndo 的值,但这对我来说有一种不好的代码味道)。
(请注意,NSUndoManager 在 iOS 和 Mac OS X 上很可能不同,所以在这种情况下,我认为“它适用于 Mac”不会是一个有用的答案)