在 CoreData 应用程序上摇动撤消工作,但没有显示撤消/重做提示
Posted
技术标签:
【中文标题】在 CoreData 应用程序上摇动撤消工作,但没有显示撤消/重做提示【英文标题】:Shake-to-undo working on CoreData app, but no undo/redo prompts shown 【发布时间】: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
(不是)。
所以我的问题是:
在什么情况下撤消有效但不显示撤消提示? 接下来您会尝试如何解决此问题?【问题讨论】:
【参考方案1】:我最终找到了一些遗留代码,这些代码手动捕捉抖动并在 undoManager 上调用 undo; motionEnded: 在视图控制器中的实现。删除后,我又开始收到撤消提示。
【讨论】:
以上是关于在 CoreData 应用程序上摇动撤消工作,但没有显示撤消/重做提示的主要内容,如果未能解决你的问题,请参考以下文章
使用 2 个链接的 ManagedObjectContext 应用程序撤消 CoreData 更改
核心数据:如何在两个 NSManagedObjectContext 之间合并插入/更新/删除,同时将合并保持为可撤消的步骤?