2

私は、振りを取り消すことをサポートするCoreDataベースのアプリケーションを持っています。これは現在正常に動作していますが、私がデバイスを振ると、NSUndoManagerが通常無料で提供する通常の取り消しプロンプトを最初に表示せずに直ちに取り消しが行われます。CoreDataアプリケーションでは振ると取り消しができますが、元に戻す/やり直しのプロンプトは表示されません

私は "元に戻すアーキテクチャ" のドキュメントから "iPhone上の[元に戻す]を使用する" を読んで思いました

canBecomeFirstResponderを実装

  • 、作るviewDidAppear
  • にビューコントローラbecomeFirstResponderを作るYES
  • を返しますビューコントローラresignFirstResponder in viewDidDisappear
  • ビューコントローラのself.undoManagerを読み書き可能なように再指定
  • NSUndoManagerを作成し、UIViewControllerinitの方法でself.undoManagerと設定しています(確認済みです)。
  • managedObjectModelの設定者のself.managedObjectModel.managedObjectContext.undoManagerself.undoManagerに設定します。再び、私はこれが呼び出されていることを確認しました。私がこれをしなければ、元に戻すことは全くできません。

トラブルシューティング私はすでに試した:

  • チェックは取り消すアクセサself.undoManagerがあるかどうかをチェック
  • と呼ばれている
  • canBecomeFirstResponderを検証する(私は戻っ私のmanagedObjectModelへの変更を参照)、実際の作業ではありません取り消し操作中に呼び出されます(そうではありません)。

は、だから私の質問は以下のとおりです。

  • どのような状況の下で作業を元に戻すが、アンドゥプロンプトが表示されませんか?
  • これを解決するために次に何をお試しくださいか?

答えて

3

最終的に、これを手作業でキャッチしてundoManagerで元に戻すという従来のコードがありました。ビューコントローラ内のmotionEnded:の実装です。これが削除されると、私は再び元に戻すプロンプトを表示し始めました。

関連する問題