2016-04-01 3 views
9

J'essaie de mettre en œuvre l'accessibilité pour une application iOS et je suis tombé sur certaines des nuances et des bizarreries impliquées.Problème de prononciation de VoiceOver: "Live" "ADD"

Par exemple: J'ai une étiquette dans mon application qui lit: "Ceci est un événement en direct." La définition de vivre dans ce contexte est "quelque chose qui se passe actuellement" et lorsqu'il est prononcé, il devrait rimer avec "Cinq". Cependant, la voix hors champ comprend et lit le mot "vivre" comme dans "vivre et laisser mourir", et il est mal prononcé en rimant le mot avec "Donner".

De même, un autre problème auquel je me heurte est le mot "ADD" dans le contexte de "AJOUTER UNE SELECTION". La signification du mot dans son contexte est "ajouter quelque chose à un panier", mais se prononce comme "ADD (trouble déficitaire de l'attention)"

Existe-t-il un moyen de donner un contexte aux mots lors de l'activation de votre application pour accessibilité?

+0

Je ne connais pas la réponse à cette question, mais je suppose qu'il ya quelque chose de similaire à la 'accessibilityLabel' où vous pouvez changer la prononciation de quelque sorte. Regarde maintenant. Peut-être dans le délégué 'AVSpeechSynthesizer'? – Fogmeister

+2

Il pourrait être prononcé A.D.D parce que les lettres sont en majuscules. Vous pouvez appliquer '-capitalizedString' ou' -lowecaseString' avant de passer la chaîne pour parler. – ZeMoon

+0

Merci @ZeMoon, c'était le correctif pour l'un de mes problèmes. –

Répondre

3

La solution - à moins pour iOS 9.1 et plus récent - changer la capitalisation du mot change également la prononciation:

  • rimes en direct avec cinq
  • rimes en direct avec
  • donner
1

Ce sont deux façons de contourner un bogue dans un lecteur d'écran:

  • ignorer: il est un bogue dans le lecteur d'écran, pas dans votre code

  • en utilisant une phrase différente.

Par exemple, on pourrait dire « cet événement est en direct » (si cela fonctionne mieux, ce dont je doute), ou « cet événement est l'air » (selon le contexte bien sûr, mais vous pouvez amende une meilleure alternative).

Vous pourriez penser à utiliser aria-label pour fournir une alternative audio comme « ceci est l'événement vivant » (parce que les rimes vivant avec cinq) pour screenreaders mais aria-label est également utilisé par l'affichage en braille, et ce serait une idée tout à fait mauvais.

Comme quelqu'un l'a dit dans les commentaires ci-dessus, les utilisateurs de lecteurs d'écran savent parfaitement comment leur lecteur d'écran prononcerait mal certains mots.

+0

Merci Adam. C'est bon à savoir. –

0

Vous pouvez définir le accessibilityLabel pour que l'étiquette prononce le texte comme vous le souhaitez.

Pour le OPs exemple:

label1.accessibilityLabel = @"This is a liv event." //notice live is spelled liv so it is pronounced for the correct context 
label2.accessibilityLabel = @"add a selection" 

Cela peut aussi se faire via le story-board/nib en sélectionnant l'étiquette et voir le "inspecteur d'identité"

Identity inspector screen shot

+1

Notez que l'étiquette d'accessibilité (= aria-label) peut être utilisée par les afficheurs braille. – Adam

2

J'ai lutté avec pendant un certain temps, mais je trouve une solution simple ... Si vous ajoutez une autre lettre « L » à la "Live" chaîne il prononcera en direct comme cinq.

Essayez ceci -> « Llive »

+1

Cela fonctionne pour moi - je souhaite qu'il y avait une documentation sur pourquoi cela fonctionne. –