2

我有一个基于 CoreData 的应用程序,它支持摇动撤销。这目前工作正常,但是当我摇动设备时,撤消会立即发生,而不会首先显示 NSUndoManager 通常免费提供的常用撤消提示。

我从“撤消架构”文档中阅读了“在 iPhone 上使用撤消”,并且我是:

  • 执行canBecomeFirstResponder,返回YES
  • becomeFirstResponder制作视图控制器viewDidAppear
  • resignFirstResponder制作视图控制器viewDidDisappear
  • 将视图控制器中的重新声明self.undoManager为读/写
  • 在方法中创建一个NSUndoManager和设置(我已经验证它被调用)。self.undoManagerUIViewController init
  • 在设置self.managedObjectModel.managedObjectContext.undoManagerself.undoManager中设置为managedObjectModel. 再一次,我已经验证这被调用了。如果我不这样做,撤消根本不起作用。

我已经尝试过的故障排除:

  • 检查撤消确实有效(我看到对我的 managedObjectModel 的更改已恢复)
  • canBecomeFirstResponder正在调用验证
  • 检查是否self.undoManager在撤消操作期间调用了访问器(不是)。

所以我的问题是:

  • 在什么情况下撤消有效但不显示撤消提示?
  • 您接下来会尝试什么来解决此问题?
4

1 回答 1

3

我最终找到了一些遗留代码,这些代码手动捕捉抖动并在 undoManager 上调用 undo;motionEnded: 在视图控制器中的实现。删除后,我又开始收到撤消提示。

于 2010-12-01T09:35:01.093 回答