XCode 15.0 日本語化計画
VoiceOver などの支援技術をサポートするために、あなたのアプリの操作モデルを改善します。
優れたアクセシビリティ体験を提供するには、アクセシビリティを必要とするユーザがあなたのアプリをどのように操作するかを考える必要があります。たとえば、あなたのアプリは以下のことを行うべきです。
このサンプルコードプロジェクトでは、VoiceOver に優れたアクセシビリティ体験を提供する方法を示します。サンプルアプリには、採用可能な犬のギャラリーが含まれています。VoiceOver を有効にしてリストをスワイプすると、システムが各々の犬に関する情報を読み上げます。また、年齢、性別、態度などの犬に関する詳細を聞いて、その犬をお気に入りとしてマークし、愛らしい犬の写真をさらに含むギャラリーを表示できます。
サンプルアプリの動作を確認するには、Xcode を使用して iOS デバイス上でアプリをビルドして実行します。VoiceOver を必ずオンにしてください。これは、[Setting(設定)] の [General(一般)] > [Accessibility(アクセシビリティ)] > [VoiceOver] から行うことができます。
採用可能な各々の子犬をプレビューするには、ユーザはスクリーン上部のコレクションビューを左右にスワイプします。ただし、VoiceOver がオンになっている場合、この操作には問題があり、支援技術はお気に入りボタンやギャラリーボタンなどの目に見える要素を認識せず、ユーザがリストの最後に到達するまで犬の詳細を認識しません。この動作は、優れたアクセシビリティ体験とは程遠いものです。
犬のコレクションをナビゲートすることがアプリの中心です。これはユーザが使用する主な機能であるため、ユーザにとって簡単に実行できる必要があります。より良いアクセシビリティ体験を提供するために、サンプルでは、accessibilityTraits を adjustable (調整可能) に設定したカスタムクラス CarouselAccessibilityElement を定義します。
adjustable な特性は、要素が accessibilityIncrement() および accessibilityDecrement() コールバックメソッドに応答してピッカーのように動作することを VoiceOver に伝えます。
次に、サンプルは CarouselAccessibilityElement のインスタンスを作成し、そのフレームをコレクションビューのフレームに設定します。
VoiceOver をオンにすると、カルーセル アクセシビリティ要素は、コレクションビューの上に 2 つの新しいジェスチャを追加します。
サンプルで CarouselAccessibilityElement を使用すると、ユーザはリストの最後にあるボタンにのみアクセスできるようになるのではなく、リスト内のすべての犬のお気に入りボタンとギャラリーボタンにスワイプできるようになります。VoiceOver がオンになっている場合、犬のリストをスワイプするジェスチャは異なりますが、この違いにより、支援が必要なユーザが各犬をプレビューすることが容易になります。
ユーザがギャラリーボタンをタップすると、アプリはフルスクリーンのモーダルビューを表示します。ただし、サンプルでは、このモーダルビューは、アプリがモーダルに表示するビューコントローラからのものではありません。そうではなく、アプリのメインビューの上部に表示される透明な背景のビューです。背景が透明なため、基礎となるビューの一部は引き続き VoiceOver で利用できますが、VoiceOver は、それらの表示されている部分が利用できないことを認識しません。
基になるビューが使用できないことを VoiceOver に伝え、トップビューをモーダルビューとして扱うためには、トップビューは accessibilityViewIsModal プロパティに true を返します。
同じコンテキストに属する個別の要素に言及する場合、項目に関する単一の情報セットを伝えることが不可欠です。たとえば、サンプルアプリでは、NAME などのタイトルラベルと、犬の名前などの値ラベルが表示されます。これらは タイトル と 値 という 2 つの別個の要素ですが、同じコンテキストの一部です。
これら 2 つの要素を同じアクセシビリティコンテキストに配置するには、UIAccessibilityElement を使用して各ラベルからの情報をカプセル化します。たとえば、サンプルプロジェクトの DogStatsView では、各 タイトル と 値 ラベルの組み合わせをアクセシビリティ要素にグループ化しています。また、プロジェクトは、2 つの UILabel オブジェクトからテキストを使用して accessibilityLabel を設定し、両方のラベルを含むフレームに accessibilityFrameInContainerSpace を設定します。これにより、VoiceOver は各 タイトルと値 のラベルのペアを単一のアクセシビリティ要素として認識できるようになります。次に、タイトルと値 のアクセシビリティ要素にフォーカスがあたるたびに、ユーザはタイトルと値を聞きます。
サンプルアプリには、犬を収容している動物保護施設の名前も表示されます。保護施設名の横には 2 つのボタンがあります。1 つは保護施設への呼び出しを開始し、もう 1 つは保護施設の場所を表示します。VoiceOver ユーザがボタンを使用できるようにするために、アプリは UIAccessibilityCustomAction を使用して、アクションの名前と、アクションの実行時に使用するオブジェクトおよびセレクタを指定します。カスタムアクションを使用すると、VoiceOver ユーザは、VoiceOver ローターを使用してアクションにアクセスできます。
アクセシビリティ要素が特定のアクションをサポートするために使用できる一連のメソッド。
class UIAccessibilityCustomAction (UIAccessibilityCustomAction)
アクセス可能なオブジェクトに対して実行すべきカスタムアクション。
typealias UIAccessibilityCustomAction.Handler (UIAccessibilityCustomAction.Handler)
アクションに対して実行すべきハンドラーを定義するクロージャの型。