Table of Contents
Dans iOS, des fonctionnalités comme VoiceOver et Dynamic Type jouent un rôle crucial dans l'amélioration de la convivialité des personnes ayant des déficiences visuelles, une faible vision et d'autres besoins d'accessibilité. En intégrant avec soin ces outils, les développeurs et les concepteurs peuvent s'assurer que leurs applications sont utilisables par un plus large public, y compris ceux qui dépendent des technologies d'assistance. L'accessibilité n'est pas une réflexion après-vente.
Comprendre la voix
VoiceOver est un lecteur d'écran intégré dans iOS qui lit à haute voix tout ce qui apparaît à l'écran — boutons, étiquettes, images, curseurs, et même des modifications de texte. Il permet aux utilisateurs ayant des déficiences visuelles de naviguer sur des applications et des sites Web en utilisant un ensemble riche de gestes et de commentaires parlés. Lorsqu'un utilisateur touche ou traîne un doigt sur l'écran, VoiceOver décrit l'élément sous son doigt. Double-tapping n'importe où sur un élément sélectionné l'active, tandis que trois doigts glissent le contenu du rouleau. Ce modèle d'interaction basé sur les gestes est puissant, mais il impose un lourd fardeau aux développeurs pour fournir des métadonnées d'accessibilité précises et complètes.
VoiceOver s'appuie sur l'API d'accessibilité (UIAccessibilité) pour extraire des informations sur les éléments à l'écran. Chaque contrôle UIKit—, , et les vues personnalisées—peut exposer les étiquettes d'accessibilité, les traits, les conseils et les actions personnalisées.
Lors de la conception pour VoiceOver, les développeurs devraient s'assurer que tous les éléments interactifs sont correctement étiquetés et accessibles via les API d'accessibilité. Cela comprend non seulement les commandes natives, mais aussi les interfaces personnalisées, les reconnaissances de gestes et le contenu dynamique. Une erreur courante est de supposer que les étiquettes par défaut du contenu texte seront suffisantes. VoiceOver peut lire le type de contrôle sous-jacent ou un identifiant brut, qui est rarement utile.
Principaux traits d'accessibilité
iOS fournit un ensemble de caractères d'accessibilité[ ([) qui informent VoiceOver sur le comportement d'un élément. Par exemple:
- Button – indique que l'élément peut être pressé pour effectuer une action.
- Header – marque un titre de section, permettant aux utilisateurs de sauter rapidement entre les titres.
- StaticText – dit à VoiceOver que l'élément est en lecture seule.
- Ajustable – pour les commandes comme les curseurs ou les steppers qui permettent des gestes d'accroissement/de déclin.
- Sélectionné – indique que l'élément est dans un état sélectionné (p. ex., un onglet).
- – pour les éléments comme URL qui ouvrent une adresse web.
L'application du trait correct améliore non seulement la sortie parlée, mais modifie également le jeu de gestes disponible pour l'utilisateur. Par exemple, un élément avec le trait Adjustable permet à l'utilisateur de glisser vers le haut ou vers le bas pour changer sa valeur. Sans lui, VoiceOver le traitera comme un élément statique standard.
Conseils d'accessibilité et actions personnalisées
Parfois, un label et un trait ne suffisent pas. Les conseils d'accessibilité peuvent fournir un contexte supplémentaire sur le résultat d'une action, comme -Ouvre le panneau de paramètres -Option ou -Supprime l'élément courant -Option. Les conseils ne sont parlés qu'après un court délai lorsque l'utilisateur persiste sur un élément, de sorte qu'ils doivent être utilisés avec parcimonie – seulement lorsque le comportement n'est pas évident de l'étiquette seule.
Pour les éléments qui supportent plusieurs actions (p. ex., une cellule de table qui peut être balayée pour révéler des boutons de suppression, de partage et de cache), utilisez actions personnalisées. VoiceOver annonce le nombre d'actions disponibles et permet à l'utilisateur de les effectuer en balayant vers le haut ou vers le bas dans un rotor dédié.
Mise en œuvre du support VoiceOver
Pour appuyer VoiceOver efficacement, il faut tenir compte des pratiques exemplaires suivantes, qui ne sont pas seulement des lignes directrices, mais qui sont nécessaires pour réussir des vérifications de l'accessibilité et créer une expérience équitable.
- Utilisez des étiquettes descriptives pour les boutons, les liens et les commandes. Un bouton étiqueté -Save est acceptable; mieux vaut enregistrer le document ou -Save brouillon. Éviter les étiquettes génériques comme -Button ou -Item 1-. Pour les icônes sans texte visible, définissez l'étiquette d'accessibilité pour décrire l'action, p.ex., -Ajouter un nouveau contact pour une icône plus.
- S'assurer que toutes les images ont un texte alt significatif. Les images décoratives qui ne transmettent pas d'information doivent être marquées comme , alors VoiceOver les ignore. Les images informatives, comme un graphique ou une photo de produit, ont besoin d'une description concise. N'oubliez pas de mettre à jour les images dans et .
- Test navigation utilisant VoiceOver gestuels pour identifier les problèmes potentiels. Activer VoiceOver dans les paramètres → Accessibilité → VoiceOver et essayer de compléter toutes les tâches principales de votre application sans regarder l'écran.
- [pour définir l'objet des éléments d'interface utilisateur. Par exemple, définissez sur les titres des sections, et sur les éléments tapables.
- Les éléments liés au groupe[ utilisant des vues sur le contenant avec et une étiquette combinée. Par exemple, une carte montrant une image, un nom et un prix du produit devrait être un élément accessible avec une étiquette comme -Kearphones sans fil, $79.99.99.
- lorsque le contenu change dynamiquement. Utilisez pour concentrer VoiceOver sur le contenu mis à jour, comme un nouveau message dans un chat ou un mode qui apparaît.
- Éviter de se fier uniquement à des indices de couleur ou de vue pour transmettre l'état. Les utilisateurs VoiceOver ne peuvent pas voir les bordures d'erreur rouges.
- Supportez les opérations du rotor d'accessibilité si nécessaire. Par exemple, si votre application inclut un curseur pour le volume, implémentez le caractère Ajustable et exposez les actions d'accroissement et de décrément via le rotor.
Voix commune sur les pièges
Même les développeurs expérimentés peuvent ignorer les problèmes subtils. Voici des problèmes fréquents à surveiller:
- Eléments accessibles sur-nestés: Si une vue parentale est accessible et que ses enfants sont également accessibles, VoiceOver annoncera le parent et chaque enfant, ce qui entraînera redondance et confusion. Soit faire du parent l'élément accessible unique ou s'assurer que les enfants sont correctement cachés.
- Les vues du défilement sont mal gérées: VoiceOver dépend de la taille du contenu du défilement. Si la taille du contenu n'est pas correctement définie, VoiceOver ne peut pas défiler à travers tous les éléments.
- : Bien que l'identificateur d'accessibilité () soit principalement utilisé pour les tests automatisés, il ne devrait pas être utilisé comme étiquette pour VoiceOver. Toujours fournir un distinct] pour la sortie lisible par l'homme.
- Ignorer les commandes du clavier: Certains utilisateurs combinent VoiceOver avec un clavier externe. Assurez-vous que votre application répond aux raccourcis clavier courants (par exemple, Cmd+S for Save) et que ces actions sont découvrables via le rotor d'accessibilité.
Comprendre le type dynamique
Dynamic Type permet aux utilisateurs de personnaliser la taille du texte sur l'ensemble du système d'applications iOS, améliorant la lisibilité et le confort pour les personnes ayant une faible vision, une presbyopie ou tout simplement celles qui préfèrent un texte plus grand. Lorsqu'un utilisateur ajuste la taille du texte dans Paramètres → Affichage et luminosité → Taille du texte, ou utilise le raccourci d'accessibilité, toute application qui prend en charge Dynamic Type va automatiquement mettre son texte à l'échelle.
Le type dynamique est construit sur le concept de styles de texte défini par . iOS fournit un ensemble de styles prédéfinis: , , , , , , , , ], et plus encore. Chaque style est matricié à une taille et un poids de police spécifiques, mais critiquement, il s'échelle par rapport à la catégorie de taille de contenu préférée de l'utilisateur (de petite taille à grande taille, plus de tailles d'accessibilité).
Lors de la conception pour Dynamic Type, les développeurs devraient s'assurer que le texte s'adapte correctement et que la mise en page s'adapte sans casser, recouper ou tronquer le contenu de manière indésirable. Cela va au-delà du texte lui-même : marges, rembourrage, largeurs de boutons, et même tailles d'images peuvent avoir besoin de s'ajuster pour maintenir un regard harmonieux sur chaque taille.
Les catégories de taille de contenu
iOS définit plusieurs niveaux de taille de texte, allant de XS[ (extra-petit) à XXXL (extra-extra-grand).Les catégories de taille d'accessibilité (plus grandes que AX1[) sont conçues spécifiquement pour les utilisateurs ayant des déficiences visuelles et peuvent produire un très grand texte – parfois plus de 50 points pour le texte corporel.
Tous les textes ne doivent pas être aussi grands. En général, le texte corporel augmente le plus, tandis que les petites légendes ou les titres de boutons peuvent s'étendre moins agressivement. La classe vous donne un contrôle fin sur le comportement d'échelle pour les polices personnalisées qui ne sont pas liées à un style de texte.
Mise en œuvre du type dynamique
Pour soutenir efficacement Dynamic Type, suivez ces pratiques. Elles garantissent que votre application respecte les préférences de l'utilisateur et se comporte de façon prévisible sur toute la gamme de tailles de texte.
- Utilisez des styles de texte qui s'adaptent automatiquement aux paramètres de l'utilisateur, tels que , , etc. Dans Interface Builder, vous pouvez définir la police dans un style de texte dans l'inspecteur Attributs. En code, utilisez .
- Éviter les tailles de polices fixes; plutôt, compter sur des polices évolutives. Si vous utilisez une police personnalisée, enregistrez-la et créez-la avec pour appliquer la même courbe de calibration que les polices système.
- Testez votre application avec différents paramètres de taille de texte dans Options d'accessibilité. Allez dans Paramètres → Accessibilité → Affichage et Taille de texte → Texte plus grand pour activer les tailles d'accessibilité. Ensuite, naviguez dans chaque écran de votre application, en accordant une attention particulière aux boutons étant coupés, images se chevauchant, et tronquage de texte.
- Assurez-vous que votre mise en page reste flexible et lisible à toutes les tailles. Utilisez les contraintes de mise en page automatique qui s'adaptent à la taille du contenu plutôt qu'à la largeur fixe. Par exemple, une étiquette devrait avoir des contraintes menant et traînant à sa supervision, et non une largeur fixe, afin qu'elle puisse croître et envelopper. Utilisez pour permettre un texte multiligne.
- Ajustez dynamiquement la hauteur de ligne et l'espacement des paragraphes. La hauteur de ligne par défaut pour les styles de texte est appropriée, mais si vous utilisez des chaînes attribuées, assurez-vous de définir par rapport à la taille de la police.
- ]L'utilisation de pour les polices personnalisées: assure que vos polices sont identiques à la police du corps du système. Vous pouvez également utiliser ] pour échausser les constantes comme les marges ou les rayons d'angle proportionnellement.
- Pour les images ou les icônes qui accompagnent le texte, envisager de fournir plusieurs résolutions ou d'utiliser SVG pour qu'elles s'échellent sans pixelation. Une icône qui se trouve à côté d'une étiquette peut avoir besoin de croître lorsque le texte grandit. Vous pouvez utiliser des catalogues d'actifs avec des images spécifiques à la taille ou des images d'échelle en utilisant avec une échelle de style de texte.
- Mise à jour des mises en page lorsque Dynamic Type change à l'exécution.Enregistrez-vous pour la notification afin d'invalider votre mise en page et de recalculer les tailles. Si vous utilisez , le système appelle automatiquement la mise à jour de la collection de caractères; cependant, les vues personnalisées peuvent nécessiter une manipulation explicite.
Manipulation du type dynamique dans les vues de tableau et les vues de collection
Dynamic Type peut compliquer les vues de liste si la hauteur des cellules est fixée. La solution est d'utiliser des cellules auto-dimensionnées qui calculent leur hauteur intrinsèque en fonction du contenu. Définissez la hauteur de ligne estimée et laissez Auto Layout étendre les cellules. Pour , définissez et fournissez un raisonnable]. Pour , utilisez des mises en page de composition ou des calculs de taille qui correspondent. Assurez-vous toujours que les étiquettes à l'intérieur des cellules ont des contraintes de tête, de piste, de haut et de bas collées aux marges des cellules.
Dimensions et performances de l'accessibilité
Dans les applications de chat ou les flux d'actualités, cela est acceptable et attendu. Cependant, dans les grilles à forte intensité de données (par exemple, une vue du mois de calendrier), l'échelle de texte peut briser la mise en page. Dans de tels cas, vous pouvez choisir de limiter la taille maximale du texte pour cette vue particulière ou fournir une mise en page compacte alternative. Soyez transparent : si vous limitez intentionnellement l'échelle, documentez qu'elle est un choix de conception pragmatique, mais essayez de l'éviter si possible.
Autre considération de performance : l'échelle des images à l'exécution peut être coûteuse. Si vous fournissez différentes tailles d'images pour différentes catégories de tailles de contenu, chargez seulement la résolution nécessaire. Utilisez pour sélectionner l'actif approprié au moment du rendu.
Accessibilité au-delà de la voix et type dynamique
Alors que VoiceOver et Dynamic Type sont deux des fonctions d'accessibilité les plus importantes d'iOS, ils ne sont pas les seuls. Une stratégie d'accessibilité complète comprend également le support pour:
- Switch Control – pour les utilisateurs avec une commande motrice limitée.
- AssistiveTouch – boutons virtuels et gestes pour les utilisateurs qui ne peuvent pas effectuer certains mouvements physiques.
- Contrôle de la voix[ – navigation vocale complète (différente de VoiceOver).
- Réduire Motion – pour les utilisateurs sensibles aux animations.
- ][Formes de bouton – pour une meilleure clarté visuelle.
- Captions fermées et [Descriptions audio – pour le contenu multimédia.
Chacune de ces fonctions interagit avec votre application de manière spécifique. Par exemple, les éléments qui soutiennent les actions personnalisées dans VoiceOver fonctionnent également avec Switch Control. S'assurer que chaque élément interactif est une cible tactile de taille réelle (au moins 44x44 points) profite à tous les utilisateurs, en particulier ceux qui ont des déficiences motrices.
Conclusion
La conception en fonction de l'accessibilité profite non seulement aux utilisateurs ayant des déficiences, mais améliore également l'expérience globale de chacun. Des fonctionnalités comme VoiceOver et Dynamic Type sont matures, bien documentées et relativement simples à mettre en œuvre une fois que vous comprenez les API fondamentales. En intégrant le support VoiceOver avec des étiquettes, des traits et des actions personnalisés appropriés, et en adoptant Dynamic Type à travers des polices évolutives et des mises en page flexibles, les développeurs peuvent créer des applications iOS plus inclusives et adaptables qui atteignent un public plus large. L'accessibilité n'est pas une fonction à basculer.
Pour plus de renseignements, veuillez consulter les Lignes directrices sur l'accessibilité , Documentation sur le type de dynamique[, VoiceOver ressources du développeur[ et W3C Web Content Accessibility Guidelines (WCAG) 2.2 pour les normes de base qui s'appliquent également aux applications mobiles.