2

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

我从 “撤消架构” 文档阅读 “在iPhone上使用撤销” 是:

  • 实施canBecomeFirstResponder,返回YES
  • 使得视图控制器becomeFirstResponderviewDidAppear
  • 使视图控制器resignFirstResponder in viewDidDisappear
  • 在视图控制器中重新指定self.undoManager作为读取/写入
  • 创建一个NSUndoManager并设置self.undoManagerUIViewControllerinit方法(我已经验证了被调用)。
  • 设置self.managedObjectModel.managedObjectContext.undoManagerself.undoManager在设置者managedObjectModel。再次,我已经证实这个问题正在被调用。如果我不这样做,撤消完全不起作用。

疑难解答我已经尝试过:

  • 检查撤消事实上确实工作(我看到改变我的managedObjectModel回复)
  • 验证canBecomeFirstResponder被称为
  • 检查,如果访问self.undoManager是在撤销操作期间被调用(它不是)。

所以我的问题是:

  • 在什么情况下不撤销工作,但没有表现出撤销的提示?
  • 接下来你会尝试排除故障吗?

回答

3

我最终跟踪到了一些遗留代码,这些代码是手动捕获抖动动作并在撤消管理器上调用undo的; motionEnded的实现:在视图控制器中。一旦删除,我开始再次收到撤消提示。