macOS のアクセシビリティ
このページでは、macOS のアクセシビリティ API を使用して、アクセシビリティ チェックリストに従ってアプリをビルドする方法について説明します。 他のプラットフォームの API については、Android のアクセシビリティと iOS のアクセシビリティに関するそれぞれのページを参照してください。
macOS (旧称 OS X) でのアクセシビリティ API のしくみを理解するには、まず OS X のアクセシビリティ モデルを確認します。
UI 要素を記述する
AppKit では、NSAccessibility
プロトコルを使用して、ユーザー インターフェイスにアクセスできるようにする API を公開しています。 これには、ボタン AccessibilityLabel
の設定など、アクセシビリティ プロパティに意味のある値を設定しようとする既定の動作が含まれます。 通常、ラベルは、コントロールまたはビューを記述する単一の単語または短い語句です。
ストーリーボード ファイル
Xamarin.Mac では、Xcode Interface Builder を使用してストーリーボード ファイルを編集します。 アクセシビリティ情報は、デザイン画面でコントロールが選択されている場合に、ID インスペクター で編集できます (下のスクリーンショットを参照):
コード
Xamarin.Mac は現在、AccessibilityLabel
セッターとして公開されていません。 次のヘルパー メソッドを追加して、アクセシビリティ ラベルを設定します:
public static class AccessibilityHelper
{
[System.Runtime.InteropServices.DllImport (ObjCRuntime.Constants.ObjectiveCLibrary)]
extern static void objc_msgSend (IntPtr handle, IntPtr selector, IntPtr label);
static public void SetAccessibilityLabel (this NSView view, string value)
{
objc_msgSend (view.Handle, new ObjCRuntime.Selector ("setAccessibilityLabel:").Handle, new NSString (value).Handle);
}
}
次に示すように、このメソッドをコードで使用できます:
AccessibilityHelper.SetAccessibilityLabel (someButton, "New Accessible Description");
AccessibilityHelp
プロパティは、コントロールまたはビューの動作の説明を目的としており、ラベルが十分な情報を提供しない場合にのみ追加する必要があります。 ヘルプ テキストは、"ドキュメントの削除" など、できるだけ短くする必要があります。
一部のユーザー インターフェイス要素は、アクセス可能なアクセスには関係ありません (独自のアクセシビリティ ラベルとヘルプを持つ入力の横にあるラベルなど)。
このような場合は、スクリーン リーダーやその他のアクセシビリティ ツールによってこれらのコントロールまたはビューがスキップされるように、AccessibilityElement = false
を設定します。
Apple では、アクセシビリティ ラベルとヘルプ テキストのベスト プラクティスについて説明するアクセシビリティ ガイドラインを提供しています。
カスタム コントロール
必要な追加の手順の詳細については、Apple の「アクセス可能なカスタム コントロールに関するガイドライン」を参照してください。
アクセシビリティのテスト
macOS には、アクセシビリティ機能のテストに役立つアクセシビリティ インスペクターが用意されています。 インスペクターは Xcode に含まれています。
初めて起動する場合、 アクセシビリティ インスペクターには、アクセシビリティを使用してコンピューターを制御するためのアクセス許可が必要です:
設定画面 (必要に応じて左下) のロックを解除し、[アクセシビリティ インスペクター] をオンにします:
有効にすると、インスペクターは画面の周りを移動できるフローティング ウィンドウとして表示されます。 次のスクリーンショットは、サンプル Mac アプリの横で実行されているインスペクターを示しています。 ウィンドウの上にカーソルが移動すると、インスペクターには各コントロールのすべてのアクセス可能なプロパティが表示されます:
詳細については、「OS X のテスト アクセシビリティ ガイド」を参照してください。