UIFocusGuide UITableView et UIButton

J'ai du mal à créer un UIFocusGuide qui va passer de UITableView à UIButton. Voici la capture d'écran du context du débogueur:

entrez la description de l'image ici

Et voici la mise en œuvre:

override func viewDidLoad() { super.viewDidLoad() self.tableView.delegate = self self.tableView.dataSource = self // add the focus guide self.view.addLayoutGuide(focusGuide) // add the anchors self.focusGuide.leftAnchor.constraintEqualToAnchor(self.button.leftAnchor).active = true self.focusGuide.topAnchor.constraintEqualToAnchor(self.tableView.topAnchor).active = true self.focusGuide.widthAnchor.constraintEqualToAnchor(self.button.widthAnchor).active = true self.focusGuide.heightAnchor.constraintEqualToAnchor(self.tableView.heightAnchor).active = true } override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) { guard let nextFocusedView = context.nextFocusedView else { return } switch nextFocusedView { case self.button: self.focusGuide.preferredFocusedView = self.button case self.tableView: self.focusGuide.preferredFocusedView = self.tableView default: self.focusGuide.preferredFocusedView = nil } } 

La fonction didUpdateFocusInContext n'est jamais appelée lorsque je suis à l'élément central de UITableView ou à la fin de UITableView.

Ajouter le guide de mise au point au button pas self.view . Vous n'avez pas besoin de redéfinir didUpdateFocusInContext Par exemple:

 var focusGuide = UIFocusGuide() override func viewDidLoad() { super.viewDidLoad() self.tableView.delegate = self self.tableView.dataSource = self // add the focus guide self.button.addLayoutGuide(focusGuide) // add the anchors self.focusGuide.leftAnchor.constraintEqualToAnchor(self.button.leftAnchor).active = true self.focusGuide.topAnchor.constraintEqualToAnchor(self.tableView.topAnchor).active = true self.focusGuide.widthAnchor.constraintEqualToAnchor(self.button.widthAnchor).active = true self.focusGuide.heightAnchor.constraintEqualToAnchor(self.tableView.heightAnchor).active = true }