ビュー ( ) を含むツールバー項目がNSButton
あり、ビューのターゲットが に設定されてnil
いるため、アクションをトリガーするときにレスポンダー チェーンを検索します。ただし、ファーストレスポンダーに対して検証する方法を試すのに問題があります。
NSToolbarItem をサブクラス化し、実装し-(void)validate
ました。私が見つけた参照によると、 を呼び出して最初のレスポンダーを取得し[[[self view] window] firstResponder]
、レスポンダー チェーンが または のいずれNSToolbarItemValidation
かを実装しているかどうかNSUserInterfaceValidations
を確認し、適切な検証メソッドを呼び出します。
ただし、 を呼び出すと、ウィンドウとして[[self view] window]
返さnil
れるため、最初のレスポンダーを取得できません。
違いがあるかどうかはわかりませんが、コードで記述するのではなく、XIB でツールバーを作成しています。
NSToolbar.h を見ると、含まれているウィンドウを参照する ivar があるため、 を呼び出すことで最初のレスポンダーを見つけることができましたが、これ[[[self toolbar] valueForKey:@"window"] firstResponder]
はちょっとしたハックであり、文書化された/安定したものを使用したいと思います。