iOS のアクセシビリティ

このページでは、iOS のアクセシビリティ API を使用して、アクセシビリティ チェックリストに従ってアプリをビルドする方法について説明します。 他のプラットフォームの API については、Android のアクセシビリティOS X のアクセシビリティに関するそれぞれのページを参照してください。

UI 要素を記述する

iOS には、開発者が、VoiceOver スクリーン リーダーでコントロールのアクセシビリティを高めるために使用できる説明テキストを追加するための、AccessibilityLabel および AccessibilityHint プロパティが用意されています。 また、コントロールに、アクセシビリティ モードで追加のコンテキストを提供する 1 つ以上の特性をタグ付けすることもできます。

コントロールによってはアクセシビリティが必要でない場合があります (テキスト入力のラベルや純粋に装飾用の画像など)。これらのケースでアクセシビリティを無効にするために IsAccessibilityElement が用意されています。

UI デザイナー

Properties Pad には、iOS UI デザイナーでコントロールを選択する際にこれらの設定を編集できるようにする、アクセシビリティ セクションが含まれています。

Accessibility Settings

C#

これらのプロパティは、コードで直接設定することもできます。

usernameInput.AccessibilityLabel = "Search";
usernameInput.Hint = "Press Enter after typing to search employee list";
someLabel.IsAccessibilityElement = false;
displayOnlyText.AccessibilityTraits = UIAccessibilityTrait.Header | UIAccessibilityTrait.Selected;

AccessibilityIdentifier とは

AccessibilityIdentifier は、UIAutomation API を通じてユーザー インターフェイス要素を参照するために使用できる、一意のキーの設定に使用します。

AccessibilityIdentifier の値は、ユーザーに対して読み上げも表示もされません。

PostNotification

UIAccessibility.PostNotification メソッドを使用すると、直接的に操作していない状況 (特定のコントロールと対話している場合など) で、ユーザーにイベントを通知できます。

お知らせ

コードからアナウンスを送信して、何らかの状態が変更されたこと (たとえば、バックグラウンド操作が完了したこと) をユーザーに通知できます。 これには、ユーザー インターフェイス内での視覚的な表示が伴う場合があります。

UIAccessibility.PostNotification (
  UIAccessibilityPostNotification.Announcement,
    new NSString(@"Item was saved"));

LayoutChanged

LayoutChanged のアナウンスは、画面のレイアウト時に使用されます。

UIAccessibility.PostNotification (
  UIAccessibilityPostNotification.LayoutChanged,
    someControl);  // someControl gets focus

アクセシビリティとローカライズ

ラベルやヒントなどのアクセシビリティ プロパティは、ユーザー インターフェイスの他のテキストと同様にローカライズできます。

MainStoryboard.strings

ユーザー インターフェイスがストーリーボード内でレイアウトされている場合、他のプロパティと同じ方法でアクセシビリティ プロパティを翻訳できます。 以下の例では、UITextFieldローカライズ IDPqa-aa-ury であり、2 つのアクセシビリティ プロパティがスペイン語で設定されています。

/* Accessibility */
"Pqa-aa-ury.accessibilityLabel" = "Notas input";
"Pqa-aa-ury.accessibilityHint" = "escriba más información";

このファイルは、スペイン語のコンテンツの es.lproj ディレクトリに配置されます。

Localizable.strings

または、翻訳を、ローカライズされたコンテンツ ディレクトリ (例: スペイン語の場合は es.lproj) 内の Localizable.strings ファイルに追加することもできます。

/* Accessibility */
"Notes" = "Notas input";
"Provide more information" = "escriba más información";

これらの翻訳は、LocalizedString メソッドを使用して C# で使用できます。

notesText.AccessibilityLabel = NSBundle.MainBundle.LocalizedString ("Notes", "");
notesText.AccessibilityHint = NSBundle.MainBundle.LocalizedString ("Provide more information", "");

コンテンツのローカライズの詳細については、iOS のローカライズ ガイドを参照してください。

アクセシビリティのテスト

[全般] > [アクセシビリティ] > [VoiceOver] に移動して、VoiceOver を設定アプリで有効にします。

Setting the speaking rate

アクセシビリティ画面には、ズーム、テキスト サイズ、色とコントラストのオプション、音声設定、その他の構成オプション用の設定も表示されます。

iOS デバイスでアクセシビリティをテストするには、これらの VoiceOver の手順に従います。

シミュレーターでのテスト

シミュレーターでテストする場合、アクセシビリティのプロパティとイベントが正しく構成されていることを確認できるように、アクセシビリティ インスペクターが用意されています。 [全般] > [アクセシビリティ] > [Accessibility Inspector] (アクセシビリティ インスペクター) に移動して、設定アプリでこのインスペクターをオンにします。

Enable Accessibility Inspector

有効にすると、インスペクター ウィンドウが常に iOS の画面上に表示されます。 テーブル ビューの行が選択されているときの出力の例を次に示します。[ラベル] には、行の内容を示し、さらにそれが "完了" している (つまり、ティックが表示されている) ことを示す文章が含まれています。

Using Accessibility Inspector

インスペクターが表示されている間は、左上の [X] アイコンを使用してオーバーレイを一時的に表示および非表示にし、アクセシビリティ設定を有効または無効にします。