Cocoa アプリに、キーボードから制御できるようにしたい NSSegmentedControl を含むフォームがあります。ただし、NSSegmentedControl はファーストレスポンダーになることを非常に嫌がっているようです。
ウィンドウの最初のファーストレスポンダーをセグメント化されたコントロールに設定しても、何も起こりません。ウィンドウが最初に読み込まれたときに、キーボード フォーカスがありません。ただし、次のようにファーストレスポンダーを手動で設定すると、フォーカスを受け取ります。
[segmentedControl.window makeFirstResponder: segmentedControl];
フォームの唯一の部分がセグメント化されたコントロールである場合、これはうまく機能します。別のフィールド (NSTextField など) を追加し、セグメント化されたコントロールの nextResponder をそのフィールドに設定すると、セグメント化されたコントロールはファーストレスポンダーにはなりません。フォーカスはすぐにテキスト フィールドに移動し、タブを押してセグメント化されたコントロールに戻ることはできません。
NSSegmentedControl をサブクラス化し、acceptsFirstResponder、becomeFirstResponder などをオーバーライドしようとしましたが、役に立ちませんでした。違いを生むのはresignFirstResponderだけです。そのメソッドからNOを返すと、セグメント化されたコントロールは実際にフォーカスを保持しますが、常にフォーカスを保持したくないことは明らかです。
コントロールを通常のレスポンダーのように動作させる方法についてのアイデアはありますか?