1

ビュー ( ) を含むツールバー項目がNSButtonあり、ビューのターゲットが に設定されてnilいるため、アクションをトリガーするときにレスポンダー チェーンを検索します。ただし、ファーストレスポンダーに対して検証する方法を試すのに問題があります。

NSToolbarItem をサブクラス化し、実装し-(void)validateました。私が見つけた参照によると、 を呼び出して最初のレスポンダーを取得し[[[self view] window] firstResponder]、レスポンダー チェーンが または のいずれNSToolbarItemValidationかを実装しているかどうかNSUserInterfaceValidationsを確認し、適切な検証メソッドを呼び出します。

ただし、 を呼び出すと、ウィンドウとして[[self view] window]返さnilれるため、最初のレスポンダーを取得できません。

違いがあるかどうかはわかりませんが、コードで記述するのではなく、XIB でツールバーを作成しています。

NSToolbar.h を見ると、含まれているウィンドウを参照する ivar があるため、 を呼び出すことで最初のレスポンダーを見つけることができましたが、これ[[[self toolbar] valueForKey:@"window"] firstResponder]はちょっとしたハックであり、文書化された/安定したものを使用したいと思います。

4

1 に答える 1

0

You don't validate manually. The application calls -validate (or its appropriate variant) on each object in the responder chain, for each menu item or toolbar item that requires validation, until it finds one that returns YES (meaning that it supports the action of each menu or toolbar item), or doesn't find one. If it finds one, your toolbar item or menu item is enabled. If not, it is disabled. At least, that's the general theory.

于 2010-07-21T23:57:04.440 に答える