2015-10-12 21 views
5

私はtvOSを初めて使っています。私は一度押した標準のボタンを持っていたいと思います。それは別の標準ボタンにフォーカスを移します。どうすればいいですか?カスタムプロパティを使用してのViewControllerにpreferredFocusedViewをオーバーライドすることによりtvOSでボタンから別のものにフォーカスを移動する方法は?

答えて

9

スタート:

var myPreferredFocusedView:UIView? 
override var preferredFocusedView: UIView? { 
    return myPreferredFocusedView:UIView 
} 

その後は、あなたのボタンのコールバックで、フォーカスを取得するあなたの次の優先ボタンにmyPreferredFocusedViewを設定します。その後、直接フォーカス更新をリクエストしてください:

func buttonCallback(){ 
    myPreferredFocusedView = button2 // button2 is an example 

    /* 
     Trigger the focus system to re-query the view hierarchy for preferred 
     focused views. 
    */ 
    setNeedsFocusUpdate() 
    updateFocusIfNeeded() 
} 

これにより、フォーカスシステムが他のボタンに更新されます。

buttonB.setNeedsFocusUpdate() 
viewController.setNeedsFocusUpdate() 

これを彼らは、ビュー階層内の同じレベルにしている場合のみ、しかし、動作します:buttonA(例えば)はフォーカスがあるとき

+0

そんなにアントワーヌありがとうございます。それはうまく動作しますが、私が今得られる唯一の問題は、ビューを離れるとフォーカスが失われ、矢印キーを使用して(またはリモコンでドラッグして)ボタンにフォーカスを合わせる必要があることです。私はこのことについてもっと勉強しようとします... – Cue

+0

同じコードを使うことができます。 'preferredFocusedView'を設定し、viewWillAppearでフォーカス更新をリクエストしてください。 – Antoine

+0

ありがとうございます! – Cue

0

別のオプションは、以下のような何かを行うことです。ないなら、あなたはおそらくsetNeedsFocusUpdateへの呼び出しにチェーンにすべての方法まで階層または何かを必要と...

Read more here

関連する問題