2016-11-29 4 views
0

J'ai un UITableView et un UIButton sur une vue tvOS. Selon Apple's doco le shouldUpdateFocusInContext: devrait être appelé chaque fois que le foyer change.tvOS: shouldUpdateFocusInContext: ne pas être appelé

Toutefois, si j'exécute le code du bouton:

[_tableViewController setEditing:YES animated:YES]; 

tvOS génère un changement de mise au point à partir du bouton à la vue de la table, mais la méthode shouldUpdateFocusInContext: n'est pas appelée sur un contrôleur ou une vue que je peux trouver .

Mon problème est qu'il y a des fois où je veux activer l'édition sur la vue de la table, mais ne pas mettre le focus dessus. Par conséquent je veux la méthode shouldUpdateFocusInContext: appelée ainsi je peux rejeter le changement de foyer.

Des idées pour résoudre ce problème?

Répondre

0

Si je me souviens bien, j'ai eu le même problème avec shouldUpdateFocusInContext et je suis passé à this méthode:

override func tableView(_ tableView: UITableView, didUpdateFocusIn context: UITableViewFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) { 
     //Where DetailTableCell is my custom UITableCell 
     if let cell = context.nextFocusedView as? DetailTableCell { 
      print("called next focused.") 
     } 

     if let previous = context.previouslyFocusedView as? DetailTableCell { 
      print("Called previous focused.") 
     } 
    } 

Indique le délégué qu'une mise à jour de mise au point spécifié par le contexte a vient de se produire.