How to move the focus from a button to another in tvOS?

时光总嘲笑我的痴心妄想 提交于 2019-12-07 05:49:45

问题


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)?


回答1:


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.




回答2:


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



来源:https://stackoverflow.com/questions/33081741/how-to-move-the-focus-from-a-button-to-another-in-tvos

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!