【问题标题】:Shake-to-undo working on CoreData app, but no undo/redo prompts shown在 CoreData 应用程序上摇动撤消工作,但没有显示撤消/重做提示
【发布时间】:2010-11-19 08:45:14
【问题描述】:

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

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

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

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

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

所以我的问题是:

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

【问题讨论】:

    标签: iphone core-data nsmanagedobject nsmanagedobjectcontext nsundomanager


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      相关资源
      最近更新 更多