2017-06-02 2 views
0

J'essaie de créer une superposition qui apparaît sur un AVPlayer lorsque j'appuie sur pause. Le problème que je rencontre est que même si je peux superposer des boutons, je n'arrive pas à obtenir le focus sur tvOS pour me concentrer sur eux ... Je suis à peu près sûr que ça se passe comme le cadre du joueur vole le focus (c'est plein écran @ 1080p) et je ne peux pas me concentrer sur les objets qui sont à l'intérieur de son cadre.Ajout de boutons de surimpression à tvOS AVPlayerViewController

Pseudo code pour ce que je fais:

class MyViewController: UIViewController { 
    var playerController = AVPlayerViewController() 
    @IBOutlet weak var button: UIButton! // button centred on screen that requires focus 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.playerController.player = AVPlayer(url: myURL) 
     self.playerController.view.frame = self.view.bounds 
     self.view.addSubview(self.playerController.view) 
     self.view.bringSubview(toFront: self.button) 
    } 

    // ... functions that enable listeners and show/hide button when self.playerController.player rate changes 
} 

Ce que je veux être en mesure d'appuyer sur pause, puis faites glisser votre doigt pour se concentrer sur le bouton (s) au lieu de la barre de recherche, puis balayez vers le bas à la barre de recherche si nécessaire. Tout comme l'application Apple Music qui vient avec le tvOS.

Merci.

Répondre

0

Ma solution est de surcharger preferredFocusEnvironment et d'ajouter des écouteurs au VC parent pour changer une condition quand certaines actions sont prises ... pas parfaites mais assez bonnes.

override var preferredFocusEnvironment { 
    if self.someCondition { 
     return [self.button] 
    } 
    else { 
     return [self.playerController.view] 
    } 
}