在我的iOS应用程序的界面中,我有显式的undo&redo按钮(shake to undo是一个相当重的操作,在这种情况下,undo的执行非常频繁)。通常,我会使用KVO观察NSUndoManager的canUndo和canRedo键路径,并在收到通知时启用和禁用按钮。不幸的是,对于那些关键路径,NSUndoManager似乎不符合KVO——或者至少,我没有看到任何通知方面的内容。
所以我的问题是:我怎样才能让它工作?我只是做错了KVO吗?(我已经检查了两次和三次,但总有这种可能性)。有没有其他我没想到的方法?(我已经考虑过在每次运行循环旋转时检查-canUndo的值,但这对我来说有点不好的代码味道)。
(请注意,在iOS和Mac OS X上,NSUndoManager很有可能是不同的,所以我不认为“它在Mac上工作”是一个有用的答案,在这种情况下)