Sono nuovo di tvOS. Mi piacerebbe avere un pulsante standard che una volta premuto, sposta lo stato attivo su un altro pulsante standard, come posso fare questo (se è possibile ovviamente)?Come spostare lo stato attivo da un pulsante a un altro in tvOS?
5
A
risposta
9
Avviare l'override del preferredFocusedView
nel vostro viewController con una proprietà personalizzata:
var myPreferredFocusedView:UIView?
override var preferredFocusedView: UIView? {
return myPreferredFocusedView:UIView
}
Poi, nel vostro tasto di richiamata, impostare il myPreferredFocusedView
per la vostra prossima pulsante preferito, che dovrebbe ottenere attenzione. Successivamente, richiedere direttamente un aggiornamento di messa a fuoco:
func buttonCallback(){
myPreferredFocusedView = button2 // button2 is an example
/*
Trigger the focus system to re-query the view hierarchy for preferred
focused views.
*/
setNeedsFocusUpdate()
updateFocusIfNeeded()
}
Questo dovrebbe aggiornare il sistema di messa a fuoco al tuo altro pulsante.
0
Un'altra opzione è quella di fare qualcosa di simile alla seguente, quando buttonA (per esempio) è attivo:
buttonB.setNeedsFocusUpdate()
viewController.setNeedsFocusUpdate()
Questo funziona solo se sono allo stesso livello nella gerarchia vista, però. Se no allora probabilmente avete bisogno di catena le chiamate verso setNeedsFocusUpdate
tutta la strada fino alla gerarchia o qualcosa ...
Grazie mille Antoine. Funziona benissimo, l'unico problema che ho ora è che quando si abbandona la vista e poi si torna indietro, l'attenzione è persa e ho bisogno di usare i tasti freccia (o trascinare sul telecomando) per ottenere un qualsiasi pulsante per mettere a fuoco. Proverò a studiare di più su questo ... – Cue
Puoi usare lo stesso codice. Assicurati di aver impostato 'preferredFocusedView' e richiedi un aggiornamento di messa a fuoco sulla viewWillAppear – Antoine
Grazie mille! – Cue