0

私はある種の描画アプリを持っています。元に戻す/やり直しを実装したい。元に戻す/やり直しの元の値と新しい値を保存するのに苦労していますが。

Gestures を使用して、いくつかのものを保存する必要があります: トランスフォーム、センター、プロパティ ダイアログの場合、さらに多くのもの、Color、Font、Font-Size、Outline、Outline Color、Text It self などを保存する必要があります。

NSMutableDictionaryユーザーがシングル ジェスチャ/プロパティ ポップオーバーで変更できる属性を作成しました。

Rob の Answer forNSUndoManagerと Rotation Gestureを使用したかったのですが、彼の Solution を使用すると で動作CGAffineTransformprepareWithInvocationTargetますCGAffineTransform

ただし、渡した辞書 (OriginalAttribs、newAttribs) で を使用する場合prepareWithInvocationTargetは保持されません。NSMutableDictionary描画オブジェクトに対するアクションごとに変更されるため、ローカル iVar として使用することはできません。

私は本当にそれらを保持したくありませんが、私はretainArgumentsの一部として使用したいようです. NSInvocationそれらのコピーが必要です。

ジェスチャがアクティブな間、OrigianlCenter、OriginalTransform が変更されるため、設定を続けることができないため、これを難しくしているのはジェスチャです。

更新このリンク を見つけましたが、やりたいことに似ているようです。

NSUndoManager を次のようにセットアップします。

        //Needed to get access to UndoManager
    NSUndoManager * undoManager = [(IoScreenEditorViewController * )UIAppDelegate.ioMainViewController.currentViewController undoManager];

        //Need to Store our Center as a NSValue
    [undoManager prepareWithInvocationTarget:self];
    [undoManager forwardInvocation:anInvocation ];

次に、実行時エラーが発生します。

 -[NSUndoManager undoAttributesWithOriginalAttributes:newAttributes:]: unrecognized selector sent to instance 0xeedcbd0

undoAttributesWithOriginalAttributes:newAttributes:NSInvocation オブジェクト用に設定したセレクターです。ドキュメントhereによると、元に戻すマネージャーの自己ではなく、自己(ターゲット)に渡す必要があると書かれていますか?

4

0 に答える 0