2016-08-23 27 views
0

XCode 7.3でOSXデスクトップアプリケーションを構築していますが、いずれかのフォームのタブ順序を設定しようとしています。OSXアプリケーション用のXCodeでタブ順序を設定しようとしています

私はポストのカップルはXCodeの4のために同様の問題を説明するが、どこにもそれになっていないことがわかりました

https://www.youtube.com/watch?v=SRrE8eqp0dU

ユーザーがフィールドにあるタブときに私は修正しようとしている基本的な問題があります私はそれを隣のフィールドではなく、以下のフィールドにタブで移動したいと思っています。

ドキュメントを見ると、nextKeyViewの配線が記載されているので、隣にタブする場所を知っているので、各フィールドのnextKeyViewを使用して正しいものを指し示すようにしました。

私はinitialFirstResponderを設定する必要があると思いますが、それを配線する場所は不明ですか?

別のビューには実際には添付されないため、ビットが失われます。

私はここhttps://github.com/johnantoni/osx-tab-order

の任意のアイデアやポインタ本当に歓迎私のソースコードを掲載しましたか?

敗北時。

enter image description here

答えて

1

私はあなたがそれが含まれていることを優れた、あなたのプロジェクトをチェックします。 AppKitで簡単に遊べるようになりました。私は決してAppKitの専門家ではありません。私は率直に何年も触れていませんでしたが、何らかの努力でそれを機能させることができました。

あなたが見ている問題は、キービューループの(自動)再計算のためです。私はハックでそれを無効にしなければなりませんでした、よりよい方法が必要ですが、私はそれを見つけることができませんでした。あなたがInterface Builderで適切にすべてのnextKeyViewsを設定している場合、今タブ移動

override func viewWillAppear() { 
    view.window?.makeFirstResponder(aField) 
} 

作品:としてあなたが最初の応答を設定することができます再計算を退治した後

class MyWindow: NSWindow { 
    override func recalculateKeyViewLoop() { 
     // Remove. nextKeyView and makeFirstResponder seemed broken with this 
    } 
} 

セットアップとしてもプログラムで行うことができる:上記のコードで

override func viewDidLoad() { 
    super.viewDidLoad() 

    aField.nextKeyView = bField 
    bField.nextKeyView = cField 
    cField.nextKeyView = dField 
    dField.nextKeyView = aField 
} 

、識別子aFieldbFieldなどのViewControllerにアウトレットです。フィールドをビューコントローラにドラッグして名前を付けてコントロールを追加できます。

完璧な解決策ではありませんが、これが役立つことを願っています。

+0

はい!セーラーヘップありがとうございます!あなたの助けを借りずにrecalculateKeyViewLoop()を見つけたとは思わないでください。エース!私はレポに自分の変更をプッシュしたので、他の誰かが立ち往生すると、彼らはそれを見ることができます。ブリリアント!魅力のように動作します! –

関連する問題