2010-11-23 10 views
18

おそらく時間が遅いですが、Visual Studioでできるのと同じように、インターフェイスビューアダイアログの全体的なタブオーダーをどこで設定できるのかわかりません。タブインタフェースビルダーでの注文ですか?

私に何かが不足していますか?タブの順序はすべて曲がっています。シミュレートするCommand-Rはそれを示します。

+0

。 –

答えて

36

あなたが探しているCocoa用語は「キービューループ」です。 initialFirstRespondernextKeyViewアウトレットを使用して、ビューをタブで並べ替える順に接続します。キーボードのフォーカスを受け取ることができる項目はフルキーボードアクセス設定(「システム環境設定」>「キーボード」)に応じて変わります。無効にすると、タブ表示はキービューのループ内のさまざまな項目をスキップします。

これは、ドキュメントhereに記載されています。

+1

ありがとうございます。 Interface Builder自体から注文を設定する方法はありますか?つまり、何かをゼロから構築すると、コントロール作成の順序に基づいて、タブの順序が決められます。最後のコントロールをビュー自体の「最初の位置」に追加すると、最初の状態になっているはずのように見えますが、最後のコントロールが表示されます。私は私の質問は、インタフェースビルダ自体からその順序を微調整する方法があるかどうかであり、可能であればプログラム的にではありません。 – JasonGenX

+3

はい、私は「アウトレット...ビューを一緒に接続する」と言うとき、私はInterface Builderからできることを話しています。ウィンドウのinitialFirstResponderのアウトレットを使用して、「最初の位置」を設定します。 –

+1

後継者のために、現在のファーストレスポンダをハイライト表示し、コンソールでキービューループを表示する要点:https://gist.github.com/mittsh/6668638 –

2

アウトレットの名前をa、b、cとします。 Macのデフォルトのタブ順序はa -> b -> c -> a

ですが、あなたの目的のタブ順序はa -> c -> b ->aです:IBを使用して

enter image description here

initialFirstResponderとしてaを設定します。

次に、nextKeyViewをa to c, c to b and c to aとして配置します。

しかし、コードを使用する方が好きです。ここにコードを追加する方が簡単になります。複雑なUIの場合と同様に30以上のコントロールがあり、シャッフルしたり、新しいコントロールを挿入する必要があるかもしれません。

だから、と同じことを達成することができます:あなたが参照している「タブ順序」のスクリーンショット、そして何が「曲がった」発見を含めるようにあなたの質問を編集してください

[self.a setNextKeyView:self.c]; 
[self.c setNextKeyView:self.b]; 
[self.b setNextKeyView:self.a]; 
+0

一部のビューがデフォルトで非表示になっていて、後で表示されるようになると、これは機能しません。 – Etan

+0

@エタン:そのような場合、どのビューが表示されているか(上にある)に基づいてnextKeyViewランタイムを設定することに注意する必要があります。 –

関連する問題