2012-01-09 1 views
2

私のココアアプリケーションでは、テキストフィールドからボタンに切り替えることができるように、コントロールのタブ順序を変更したいと思います。私は、ボタンとテキストフィールドのnextKeyViewプロパティを接続しましたが、全く効果がないようです。Cocoa:NextKeyView - タブ注文

キーボードの適切なシステム設定が既に有効になっているので、すべてのコントロールにタブすることができます。それはうまく動作しますが、私はnextKeyViewとして設定した順序ではありません。

+0

質問を編集して、実行中のアプリケーションにウィンドウのスクリーンショットを含めてください。 –

答えて

2

ウィンドウのinitialFirstResponderコンセントを少なくとも1つのフィールドに接続する必要があります。 NSTabViewのようないくつかのコントロールにはinitialResponderがもう1つあります。したがって、あなたがタブビューの中に何かを持っているなら、それらを接続する必要もあります。 全体のロジックは、少なくとも1つのフィールドにすべての初期応答を接続する必要があります

+0

こんにちは、それはOSXのバージョンに依存します。なぜならタブの順序は10.9.2 OSXではデフォルトで動作していますが、10.8.5 OSXでは動作していないからです。 – VSN

0

@sachによって提供された答えは私のために解決しました。

私は新しいストーリーボードプロジェクトを作成し、3つのテキストフィールドを追加しました。私はInterface BuilderのnextKeyViewと一緒にそれらをリンクしてカスタム注文を設定しましたが、これは実行時に何の効果もありませんでした。これは、あなたの(そして私の)問題を再現するために思いつくことができる最も簡単なテストケースです。

は、@のサックスの答えを使用して、それを解決するための新しいアウトレットを作成し、NSTextField秒のいずれかに接続するには:のViewControllerで

@IBOutlet var firstTextField: NSTextField! 

、私はその後追加:

override func viewWillAppear() { 
    // Must execute this after the window is connected 
    self.view.window!.initialFirstResponder = nameField 
} 

再次のKeyViewリンクを使用して設定された順序に従ってテキストフィールドが正しく循環します。