2017-08-08 4 views
0

J'ai un bouton qui peut basculer d'une étiquette étant montré:iOS VoiceOver attendre sur l'élément de terminer la lecture avant de passer à l'élément suivant

class ViewController: UIViewController { 
    @IBOutlet weak var label: UILabel! 
    @IBOutlet weak var button: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     button.accessibilityLabel = "You can tap this really long string that i'm testing" 
     label.accessibilityLabel = "This is a label" 
    } 

    @IBAction func buttonTapped(_ sender: UIButton) { 
     label.isHidden = !label.isHidden 
     if !label.isHidden { 
      UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, label) 
     } 
    } 
} 

Lorsque vous appuyez sur le bouton, si l'étiquette est montré activer l'étiquette être lu par VoiceOver. Le problème est VoiceOver commence automatiquement à lire accessibilityLabel du bouton lorsque l'utilisateur appuie sur le bouton. Cela signifie que VoiceOver lit la moitié du accessibilityLabel du bouton avant de passer à la lecture du accessibilityLabel du label (par exemple, "Vous pouvez appuyer sur ce bouton ... Ceci est une étiquette").

Est-il possible que je peux savoir quand VoiceOver est fait lecture accessibilityLabel et seulement puis appel UIAccessibilityPostNotification du bouton? Ou existe-t-il un moyen de désactiver la lecture du bouton par VoiceOver lorsque l'utilisateur appuie sur le bouton?

Un exemple de projet peut être vu ici: https://github.com/rajohns08/VoiceOverTest

Répondre

1

Malheureusement, mon intestin (une source éminemment citables) dit que vous ne pouvez pas, et ne doit pas, inspecter et travail autour de tout discours généré par VoiceOver en réponse à la navigation de l'utilisateur ou action. L'utilisateur ne devrait pas avoir à attendre sur l'étiquette du bouton avant d'entendre le résultat de l'activation du bouton. Cela dit, vous pourriez reconsidérer en utilisant un tel long bouton d'étiquette et inclure des informations supplémentaires dans le accessibilityHint, qui est lu après un délai, à la place.