web-dev-qa-db-fra.com

Quelle est la différence entre setAccessibilityLabel et accessibilityIdentifier dans ios?

J'ai parcouru notre base de code et défini la propriété accessibilityIdentifier sur tous nos boutons et champs de texte afin de pouvoir y accéder à l'aide de UIAutomation. Ce faisant, je suis tombé sur du code déjà en place.

[_goodButton setAccessibilityLabel:@"off"];

Je ne trouve aucune documentation sur les différences entre ces deux méthodes. On dirait qu'ils font la même chose. Est-ce que quelqu'un sait? Je trouve étrange que cette étiquette soit également désactivée. 

42
Tyler Pfaff

Au lieu d'utiliser accessibilityLabel (voir ci-dessous), vous devez utiliser accessibilityIdentifier .

Ce problème de github explique la différence:

Etant donné que accessibilityLabel est une chaîne tournée vers l'extérieur qui est réellement utilisée par les lecteurs d'écran d'accessibilité (et doit être localisée dans la langue de l'utilisateur du périphérique), Apple fournit désormais une propriété alternative (iOS 5+) spécifiquement destinée à UI Automation.

29
Joshua

Il y a certainement une certaine confusion à propos de ces deux propriétés. Je suis moi-même tombé dans le même piège, mais les recherches et les expérimentations avec les tests VoiceOver et UI Automation ont montré qu'il y avait une nette différence.

accessibilityLabel
Il s'agit de la valeur lue par VoiceOver pour l'utilisateur final ou exposée via d'autres outils d'accessibilité. En tant que tel, cela devrait être une chaîne localisée. Il est préférable de garder cela dans un seul mot, si possible, décrivant ce que c'est (c'est-à-dire 'Aide', 'Jouer', 'Nouvelle note', etc.). Il devrait également être mis en majuscule, mais ne pas se terminer par un point. Cela aide à la prononciation de VoiceOver.

Comme il s’agit de contacts avec les utilisateurs finaux, dans le cadre des tests effectués par les utilisateurs, un développeur peut modifier le tout pour que ce soit plus clair, le cas échéant. Par exemple, cela peut changer de "Play" à "Read Comments". Pour cette raison, vous ne voudriez pas que cela soit lié aux tests d'automatisation, car une telle modification annulerait tous les tests faisant référence au label Play actuellement inexistant. C'est là que accessibilityIdentifier entre en jeu.

accessibilityIdentifier
Alors que accessibilityLabel est destiné à l'utilisateur final, accessibilityIdentifier est en revanche réservé aux développeurs et est principalement utilisé pour identifier un élément accessible pour l'automatisation et les outils de test de l'interface utilisateur. En tant que tel, il ne devrait pas être localisé.

Un développeur doit utiliser une valeur qui n'a de sens que dans le contexte du test de l'interface utilisateur, et non pour l'utilisateur final. Par exemple, un bouton qui affiche une rubrique d'aide peut avoir l'identifiant 'HelpButton', ce qui est clair pour ce qu'il identifie mais n'est pas quelque chose que l'utilisateur final aurait jamais besoin d'être exposé.

Prenez l'habitude d'utiliser cette valeur! Cela garantit que vos tests d'automatisation de l'interface utilisateur ne seront jamais interrompus en raison de la localisation ou de modifications apportées à accessibilityLabel.

accessibilityHint (y compris pour être complet)
accessibilityHint est pour les cas où la accessibilityLabel peut ne pas être assez clair par lui-même. Puisque accessibilityLabel doit, si possible, être conservé dans un seul mot, accessibilityHint peut fournir un contexte supplémentaire. Cependant, si accessibilityLabel est assez expressif, vous devez laisser accessibilityHint vierge.

S'il est déterminé que accessibilityHint est requis, limitez-le à un fragment simple et court, capitalisé et se terminant par une période. Il devrait décrire ce qu’il fait et non pas ce qu’il faut faire (par exemple, «Lit la piste en cours» au lieu de «Lire la piste en cours», car celle-ci sonne comme une instruction, et non ce qu’elle fait)

J'espère que cela pourra aider!

56
MarqueIV

Vous vérifiez celui-ci

Attributs d’étiquette et d’identificateur d’accessibilité L’attribut étiquette et l’attribut d’identificateur occupent une place importante dans la capacité de votre script à accéder aux éléments de l’UI. Il est important de comprendre comment ils sont utilisés.

La définition d’une valeur explicite pour l’attribut label est facultative, mais recommandée. Vous pouvez définir et afficher la chaîne d'étiquette dans le champ de texte Étiquette de la section Accessibilité de l'inspecteur d'Identité dans Interface Builder. Cette étiquette devrait être descriptive, mais brève, en partie parce que les technologies d'assistance telles que VoiceOver d'Apple l'utilisent comme nom de l'élément d'interface utilisateur associé. Dans UI Automation, cette étiquette est renvoyée par la méthode label. Il est également renvoyé par la méthode name en tant que valeur par défaut si l'attribut identifier n'est pas défini. Pour plus de détails, consultez Référence de la classe UIAccessibilityElement.

L'attribut identifier vous permet d'utiliser des noms plus descriptifs pour les éléments. C'est facultatif, mais il doit être défini pour que le script puisse effectuer l'une de ces deux opérations:

Accéder à une vue de conteneur par nom tout en pouvant accéder à ses enfants . Accéder à une vue UILabel par nom pour obtenir le texte affiché (via son attribut value) . Dans UI Automation, la méthode name renvoie la valeur de cet attribut d'identifiant, s'il en existe un. Si elle n'est pas définie, la méthode name renvoie la valeur de l'attribut label.

Actuellement, vous pouvez définir une valeur pour l'attribut identifier uniquement par programme, via la propriété accessibilityIdentifier. Pour plus d'informations, voir Référence du protocole UIAccessibilityIdentification.

4
Harunmughal

AccessibilityLabel est la valeur lue par VoiceOver pour l’utilisateur final. En tant que tel, cela devrait être une chaîne localisée. Le texte devrait également être en majuscule. Cela facilite la prononciation de VoiceOver. accessibilityLabel est utilisé pour les tests et les utilisateurs malvoyants.

AccessibilityIdentifier identifie un élément via l'accessibilité, mais contrairement à accessibilityLabel, le but de accessibilityIdentifier est uniquement d'être utilisé comme identifiant pour les tests UI Automation. Nous utilisons une valeur pour le processus de test .

0
BuLB JoBs