En général, je regarde l'exemple de code UICatalog d'Apple pour la prise en charge de base de VoiceOver, mais il semble qu'il existe un support VoiceOver pour UIPickerViews dans l'exemple de code. Dois-je fournir une méthode accessibilityLabel pour append un support VoiceOver? J'ai essayé d'implémenter les methods UIPickerViewAccessibilityDelegate , mais la voix hors champ ne lit que les labels dans ma vue sélecteur et non l'indice de glisser vers le haut ou vers le bas pour modifier les valeurs.
Ma vue sélecteur est également définie sur la vue d'input d'un UITextField. Donc, je ne suis pas sûr que cela soit pertinent ou non.
Mise à jour: https://github.com/stevemoser/VoiceOverPicker
J'ai créé un exemple de projet démontrant le problème. Dans l'exemple, il y a une vue normale du sélecteur et un champ de text. Il existe également un sélecteur défini sur la propriété de vue d'input du champ de text. Je n'arrive pas à activer l'un ou l'autre sélecteur en tapant dessus tout en utilisant VoiceOver. Bien que je puisse activer l'un ou l'autre en balayant (gauche et droite) à travers les vues à l'écran. Des idées?
Mise à jour 2: Il semble que si l'application est une application iPhone fonctionnant sur un iPhone ou une application iPad fonctionnant sur un iPad, cela fonctionne bien mais si c'est une application iPhone uniquement fonctionnant sur un iPad, appuyer pour sélectionner un UIPickerView ne fonctionne pas.
Est-ce que vous faites juste un UIPickerView à la vanille en utilisant des titres pour chaque rangée (et pas des vues personnalisées)? Si oui, il n'y a rien que vous devriez faire.
Vous avez mentionné que VoiceOver lisait correctement l'label sur chaque ligne, donc nous soaps que le paramètre isAccessibilityElement de UIPickerView est défini sur YES. Il lit aussi correctement les accessibilityLabels.
Est-il possible que vous interagissiez avec le sélecteur avant qu'il ait la chance de lire le accessibilityHint? (Pour le bénéfice des autres, le accessibilityHint est le "glisser ou descendre avec un doigt pour ajuster la valeur" que Steve a mentionné dans sa question.) Ou peut-être une notification change le focus VoiceOver avant que l'indice ait une chance d'être lu?
Par défaut, si votre vue sélecteur est accessible, lorsque vous vous concentrez dessus avec VoiceOver, il lira le quelque chose suivant ces lignes:
"[ROW LABEL] Ajustable [#number] sur [#total] élément du sélecteur" une pause de 2 à 3 secondes puis "Balayez vers le haut ou vers le bas pour sélectionner la valeur"
Quelques points à noter: