シェイクして元に戻す機能をサポートする CoreData ベースのアプリケーションがあります。これは現在正常に動作していますが、デバイスを振ると、NSUndoManager が通常無料で提供する通常の元に戻すプロンプトを最初に表示せずに、すぐに元に戻すことができます。
「元に戻すアーキテクチャ」ドキュメントから「iPhone での元に戻す」を読みました。
- 実装
canBecomeFirstResponder
、復帰YES
- ビューコントローラー
becomeFirstResponder
を作るviewDidAppear
- ビューコントローラー
resignFirstResponder
を作るviewDidDisappear
self.undoManager
ビューコントローラーで読み取り/書き込みとして再宣言するNSUndoManager
メソッドでand 設定self.undoManager
を作成しますUIViewController
init
(これが呼び出されることを確認しました)。- のセッターで に設定し
self.managedObjectModel.managedObjectContext.undoManager
ます。繰り返しますが、これが呼び出されていることを確認しました。これをしないと、元に戻す操作がまったく機能しません。self.undoManager
managedObjectModel
私がすでに試したトラブルシューティング:
- 元に戻すチェックは実際に機能します(管理対象オブジェクトモデルへの変更が元に戻されていることがわかります)
- 検証
canBecomeFirstResponder
が呼び出されています - 元に戻す操作中にアクセサ
self.undoManager
が呼び出されているかどうかを確認します(そうではありません)。
だから私の質問は:
- 元に戻すは機能するが、元に戻すプロンプトが表示されないのはどのような状況ですか?
- これをトラブルシューティングするために、次に何を試しますか?