I'm new to tvOS. I would like to have a standard button that once is pressed, it moves the focus to another standard button, how can I do this (if it's possible of course)?
Start by overriding the preferredFocusedView
in your viewController with a custom property:
var myPreferredFocusedView:UIView?
override var preferredFocusedView: UIView? {
return myPreferredFocusedView:UIView
}
Then, in your button callback, set the myPreferredFocusedView
to your next preferred button which should get focus. After that, directly request a focus update:
func buttonCallback(){
myPreferredFocusedView = button2 // button2 is an example
/*
Trigger the focus system to re-query the view hierarchy for preferred
focused views.
*/
setNeedsFocusUpdate()
updateFocusIfNeeded()
}
This should update the focus system to your other button.
Another option is to do something like the following, when buttonA (for example) has focus:
buttonB.setNeedsFocusUpdate()
viewController.setNeedsFocusUpdate()
This only works if they're on the same level in the view hierarchy, though. If not then you probably need to chain the calls to setNeedsFocusUpdate
all the way up the hierarchy or something...
Read more here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With