1

元に戻すとやり直しを処理するビューがあります。特定の状態について、ファーストレスポンダーをビューからビューのウィンドウに変更します。この状態で、ウィンドウのデリゲートのvalidateMenuItem:メソッドが元に戻すメニュー項目をチェックすることを期待しています。

これは、ウィンドウを閉じるときに機能します。しかし、ウィンドウが表示されている場合、他のレスポンダーが元に戻すアクションを処理します。

私の推測では、それはウィンドウコントローラーですか?ただし、これはドキュメントベースではないアプリであるため、手動で実装していません。カスタムウィンドウコントローラーを作成する必要がありますか?もしそうなら、それを行う最も簡単な方法は何ですか?

4

1 に答える 1

2

ここで答えを見つけました:http://www.cocoabuilder.com/archive/cocoa/307917-validatemenuitem-not-called-for-undo-menu-item.html

アクション'undo:'を使用して[元に戻す]メニュー項目を構成すると、これが元戻すメニュー項目であることがフレームワークに通知されるため、NSWindowに実装されている標準の元に戻るUIメカニズムの1つの要素になります。このような状況では、メニュー項目(特にその検証)をいじくりまわすことはできません。

メカニズム全体を自分で実装する場合は、[元に戻る]メニュー項目に「myUndo:」などのカスタムアクションを使用する必要があります。つまり、フレームワークが知る限り、アプリには(標準の)取り消し機能がなく、アクション/検証は通常の方法で機能するはずです。

于 2013-02-26T12:48:21.670 に答える