1

ユーザーがUIViewを上下に移動して、あるビューを別のビューの上に配置できるようにするアプリケーションがあります。UIViewの「レベル」(親のサブビューのインデックス)を変更するのは、 exchangeSubviewAtIndexメソッドを使用してスーパービューのUIViewのインデックスを変更することで非常に簡単です。

         /---------/
IDX 1   /    A    /
       /---------/
         /---------/
IDX 0   /    B    /
       /---------/


Move 'A' Down


         /---------/
IDX 1   /    B    /
       /---------/
         /---------/
IDX 0   /    A    /
       /---------/

現在、NSUndoManagerを使用して変更を記録しているので、ユーザーは下に移動するアクションを元に戻すことができます。これは正常に機能しています。NSUndoManagerでREDOメッセージを実行しようとすると、問題が発生します。移動されていたUIViewには(親のビュー内の位置であるため)「ZIndex」の状態がないため、REDOは何もしません。

REDOのREDO呼び出しを明示的に渡す方法はありますか?

4

1 に答える 1

1

OK、私の問題は、元に戻すマネージャーのやり直し部分の誤解でした。元に戻すマネージャーのやり直しが別の元に戻すことが判明しました。元に戻すプロセスにあることを認識し、呼び出しをやり直しスタックに追加します。

この投稿が私の鍵でした: NSUndoManager: redo not working

于 2012-10-24T20:58:06.620 に答える