2015-10-12 5 views

ответ

9

Start переопределения preferredFocusedView в вашем ViewController с настраиваемым свойством:

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() 
} 

Это должно обновить систему фокусировки на другую кнопку.

+0

Большое спасибо Antoine. Он работает нормально, единственная проблема, с которой я сейчас сталкиваюсь, заключается в том, что, покидая представление, а затем возвращаюсь, фокус теряется, и мне нужно использовать клавиши со стрелками (или перетаскивать пульт), чтобы получить любую кнопку для фокусировки. Я попытаюсь подробнее узнать об этом ... – Cue

+0

Вы можете использовать тот же код. Просто убедитесь, что вы установили 'preferredFocusedView' и запросили обновление фокуса в viewWillAppear – Antoine

+0

Большое вам спасибо! – Cue

0

Другой вариант, чтобы сделать что-то вроде следующего, когда buttonA (например) имеет фокус:

buttonB.setNeedsFocusUpdate() 
viewController.setNeedsFocusUpdate() 

это работает только, если они находятся на том же уровне в иерархии представлений, хотя. Если нет, то вы, вероятно, нужно приковать вызовы setNeedsFocusUpdate всю дорогу вверх по иерархии или что-то ...

Read more here

Смежные вопросы