2015-09-19 2 views
4

Я добавил несколько кнопок в игру Swift для tvOS.Как настроить начальный фокус на кнопках в контроллере просмотра, работающем на tvOS (AppleTV)?

override func didMoveToView(view: SKView) { 

    let button1=UIButton(frame: CGRectMake(330, 800, 300, 100)) 
    button1(imageBuySelected, forState: UIControlState.Focused) 
    button1(imageBuyNormal, forState: UIControlState.Normal 
    button1 = UIColor.clearColor() 
    button1(self, action: "buy1", forControlEvents: UIControlEvents.PrimaryActionTriggered) 
    self.view!.addSubview(button1) 

    let button2=UIButton(frame: CGRectMake(330, 800, 300, 100)) 
    button2(imageBuySelected, forState: UIControlState.Focused) 
    button2(imageBuyNormal, forState: UIControlState.Normal 
    button2 = UIColor.clearColor() 
    button2(self, action: "buy2", forControlEvents: UIControlEvents.PrimaryActionTriggered) 
    self.view!.addSubview(button2) 

    let button3=UIButton(frame: CGRectMake(330, 800, 300, 100)) 
    button3(imageBuySelected, forState: UIControlState.Focused) 
    button3(imageBuyNormal, forState: UIControlState.Normal 
    button3 = UIColor.clearColor() 
    button3(self, action: "playGame", forControlEvents: UIControlEvents.PrimaryActionTriggered) 
    self.view!.addSubview(button3) 
} 

Когда начинаются игры. Начальный фокус установлен на кнопку1. Я хочу, чтобы фокус был установлен на кнопку3. Я понимаю, что предпочтительный фокус автоматически выбирается на основе первого объекта фокусируемого объекта, который начинается с верхнего левого угла экрана. Кто-нибудь знает, как переопределить это, чтобы я мог сделать button3 предпочтительным фокусом в начале игры?

ответ

6

На ваш взгляд или контроллер просмотра переопределите метод preferredFocusedView для возврата button3.

Подробнее об этом методе можно узнать в разделе документации Preferred Focus Chain.

+0

У меня аналогичная проблема, но мои кнопки создаются динамически после ответа сервера, поэтому я не могу установить свой предпочтительныйFocusedView? – frontsidebus

+0

Вы пробовали setNeedsFocusUpdate? https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UIFocusEnvironment_Protocol/index.html#//apple_ref/occ/intfm/UIFocusEnvironment/setNeedsFocusUpdate – Ryan

+3

Спасибо за ответ. Я прочитал документацию и «вроде» понимаю, что нужно делать, но я не выполняю ее. Любой шанс, что кто-то может опубликовать образец кода, иллюстрирующий, что нужно сделать? –

5

Надеюсь, это то, что вы искали, удачи! :)

override var preferredFocusedView: UIView? { 
    get { 
     return self.button3 
    } 
} 
Смежные вопросы