【发布时间】:2010-11-19 08:45:14
【问题描述】:
我有一个基于 CoreData 的应用程序,它支持摇动撤销。这目前工作正常,但是当我摇动设备时,撤消会立即发生,而不会首先显示 NSUndoManager 通常免费提供的常用撤消提示。
我从“撤消架构”文档中阅读了“在 iPhone 上使用撤消”,并且是:
- 实现
canBecomeFirstResponder,返回YES - 在
viewDidAppear中制作视图控制器becomeFirstResponder - 在
viewDidDisappear中制作视图控制器resignFirstResponder - 将视图控制器中的
self.undoManager重新声明为读/写 - 创建一个
NSUndoManager并在UIViewControllerinit方法中设置self.undoManager(我已经验证它正在被调用)。 - 在
managedObjectModel的设置器中将self.managedObjectModel.managedObjectContext.undoManager设置为self.undoManager。再一次,我已经验证这被调用了。如果我不这样做,撤消根本不起作用。
我已经尝试过的故障排除:
- 检查撤消确实有效(我看到对 managedObjectModel 的更改已恢复)
- 正在调用验证
canBecomeFirstResponder - 检查是否在撤消操作期间调用了访问器
self.undoManager(不是)。
所以我的问题是:
- 在什么情况下撤消有效但不显示撤消提示?
- 接下来您会尝试如何解决此问题?
【问题讨论】:
标签: iphone core-data nsmanagedobject nsmanagedobjectcontext nsundomanager