2

カスタムXMLファイルを作成するだけの単純なドキュメントベースのアプリケーションがあります。アウトラインビューを使用してXMLドキュメントをナビゲートします。アウトラインビューの項目を選択すると、カスタムビューがドキュメントビューのサブビューとして表示され、ユーザーはデータを入力できます。ビューの1つにNSTextFieldがあります。「元に戻す」フラグが設定されています。編集が完了したときに、NSDocumentでundoManagerが呼び出されることを確認するためにテストしました。したがって、コントロールはファーストレスポンダーを介してバウンスしているように見えます。

IBActionでは、ActionNameを使用して、メニューに正しく表示されるようにします。ここに問題があります。ActionNameがメニューに表示されないだけでなく、[元に戻す]をクリックしても、NSTextFieldで実行されたアクションが元に戻されるのではなく、その直前に登録されたアクションが元に戻されます。NSTextFieldでundoを設定するときに見落としたことがありますか?

(IBAction)textFieldChanged:(id)sender {

...ここにいくつかのコード...

[[self undoManager] setActionName:@"テキストの変更"];

}

よろしくお願いします、ロブ

4

1 に答える 1

1

テキストフィールドは、アウトラインビュー(つまり、ドキュメントのメインウィンドウ)と同じウィンドウにありますか?そうでない場合は、その追加ウィンドウのデリゲートを設定し、ドキュメントの元に戻るマネージャーを返すことで-windowWillReturnUndoManager:に応答する必要があります。

-undoManagerがドキュメントに対して呼び出されていると言っているので、上記は当てはまらないと思います。ドキュメントのメインウィンドウにあり、[元に戻すを許可する]がオンになっているときに、ドキュメントの元に戻すマネージャーを使用しないテキストフィールドを知りませんでした。フィールドを削除して再作成するのと同じくらい簡単なことを試しましたか?時々IBは奇妙なことをします...おかしなことに、これらの問題はInterfaceBuilder自体の変更を元に戻したりやり直したりするときに発生する傾向があります。:-)

于 2010-09-02T23:27:19.240 に答える