Mac OS X アプリで、ユーザーが 1 つのウィンドウで次の項目間をタブ移動できるようにする必要があります。
- ツールバー内の NSSearchField
- NSブラウザ
- NSCollectionView
- NSCollectionView (2 つ目)
- NSCボボックス
ユーザーがテキスト ボックスとリストの間でのみタブを使用している場合。何らかの理由で、NSBrowser はリストとしてカウントされないようであり、ツールバー内の NSSerachField はテキスト ボックスとしてカウントされないようです。しかし、タブをシフトすると、NSSerachField で後方にタブ移動できます
コントロール間のタブ設定を、NSBrowser がタブ化されているすべてのコントロール間のタブに変更すると、NSSearchField も変更されますが、NSSearchField からタブアウトできないという別の問題があります。これは、nextKeyView チェーンが正常であるか、すべてのコントロール間のタブが有効になっているときに nextKeyView の値が完全に無視されることを意味すると想定しています。
インターフェイスビルダーで nextKeyViews を設定しています。
Mac OS で NSBrowser をリストとして扱う方法はありますか?既に NSBrowser をサブクラス化しています。また、テキスト ボックスがツールバーにある場合にタブで移動できない理由はありますか。
これに対する追加のしわは、NSBrowser と最初の NSCollectionView が NSTabView 内にあり、2 番目の NSCollectionView も NSTabView 内にあることです。NSTabView には NSTabViewItems が動的に追加および削除されるため、コンテンツはドキュメントのように機能します。NSTabViews を nextKeyView として設定し、NSTabViewItems を NSTabView に追加するとすぐに、NSTabViewItems の initialFirstResponder を設定します。また、NSBrowser が NSCollectionView にタブで移動するように nextKeyView を設定しています。そして、windows initialFirstResponder は最初の NSTabView に設定されます。
追加情報 autorecalculatesKeyViewLoop を NO にしました。コードで次のレスポンダーを設定することで、一時的に機能させることができましたが、何かが起こったようで、Cocoa がすべてを変更します。