これらの 2 つのプロパティについては、間違いなく混乱があります。私自身もまったく同じ罠に陥りましたが、VoiceOver と UI オートメーションのテストに関する調査と実験により、明らかな違いがあることがわかりました。
accessibilityLabel
これは、VoiceOver によってエンドユーザーに読み取られる値、または他のアクセシビリティ ツールを通じて公開される値です。そのため、これはローカライズされた文字列である必要があります。可能であれば、それが何であるかを説明する 1 つの単語 (つまり、「ヘルプ」、「プレイ」、「新しいメモ」など) に留めておくのが最善です。また、大文字にする必要がありますが、ピリオドで終わらせないでください。これは、VoiceOver の発音に役立ちます。
これはエンドユーザー向けであるため、ユーザーテストの一環として、開発者は必要に応じてこれをより明確にするために変更できます。たとえば、「再生」から「コメントを読む」に変更される場合があります。そのため、これを自動化テストに関連付けることは望ましくありません。そのような変更は、現在存在しない 'Play' ラベルを参照するすべてのテストを壊してしまうからです。そこにaccessibilityIdentifier
出番です。
accessibilityIdentifier
はaccessibilityLabel
エンドユーザー向けですがaccessibilityIdentifier
、対照的に開発者向けのみであり、主に UI 自動化およびテスト ツールにアクセス可能な要素を識別するために使用されます。そのため、ローカライズしないでください。
開発者は、エンド ユーザーではなく、UI テストのコンテキストでのみ意味のある値を使用する必要があります。たとえば、ヘルプ トピックを表示するボタンは、'HelpButton' という識別子を持つことができます。これは、それが何を識別するかは明確ですが、エンド ユーザーがこれまで公開する必要があるものではないためです。
この値を使用する習慣をつけてください。そうすることで、ローカリゼーションや への変更によって UI 自動化テストが壊れることがなくなりますaccessibilityLabel
。
アクセシビリティヒント(完全を期すためのものを含む)
accessibilityHint
はaccessibilityLabel
、単独では十分に明確でない可能性がある場合のためのものです。accessibilityLabel
可能であれば、単一の単語にとどめるべきであるためaccessibilityHint
、追加のコンテキストを提供できます。ただし、 だけで十分な表現力がある場合は、空白accessibilityLabel
のままにしておく必要があります。accessibilityHint
accessibilityHint
必要であると判断された場合は、これを単純で短い文の断片にし、大文字を使い、ピリオドで終わらせます。何をするかを説明するのではなく、何をするかを説明する必要があります (つまり、「現在のトラックを再生します。」ではなく、「現在のトラックを再生します。後者は、何をするかではなく、指示のように聞こえるためです。)」
これがどのように使用されるかというと、VoiceOver は最初にラベルを読み上げ、少し一時停止してからヒントを読み上げます (例: 「再生... 現在のトラックを再生します。ユーザーがヒントを無効にすると、もちろん単に「再生」と表示されます)。
それが役立つことを願っています!