IOSアプリをアクセシブルにする作業を進めており、ほぼ完成しています。私のアプリにはいくつかのカスタム画面遷移が含まれており、VoiceOverがオンの場合、遷移後に説明する左上の要素、または場合によってはランダムな要素のいずれかを選択するようです。 UIAccessibilityTraitSummaryElement
は有望に見えましたが、私が理解しているように、アプリが起動したときにのみ機能し、任意の遷移の後では機能しません。
要素にVoiceOverフォーカスが与えられる優先順序を指定するためのアクセシビリティ特性またはプロパティはないようです。 VoiceOverフォーカスを強制する方法はありますか?
EDIT: iOS 6が利用可能になり、kevbohが述べたように、UIAccessibilityLayoutChangedNotification
またはUIAccessibilityScreenChangedNotification
を投稿するときに引数を渡すことができるようになりました。
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, myAccessibilityElement);
myAccessibilityElement
は、ほとんどの場合、isAccessibilityElementがYES(多くのビューのデフォルト)に設定されたUIViewになります。
または、iOS6 UIAccessibilityTraitHeader
で追加された新しいトレイトをアクセシビリティ要素のaccessibilityTraits
に追加することもできます。これにより、同じ結果が得られるはずです(ただし、これはまだテストしていません)。
ORIGINAL: iOS 6にはまだNDAの下にあるため、ここでは説明できない新しいAPIがありますが、WWDC 2012の「AccessibilityforiOS」ビデオ(セッション210)にあります。
ただし、これに失敗した場合の回避策は、アナウンスを手動でトリガーして、デフォルトのフォーカスされたアクセシビリティラベルのアナウンスを上書きすることです。
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"Your text");
このおかげで、VoiceOverフォーカスを強制し、必要に応じて要素を並べ替える興味深い説明が提供されます アクセシビリティ推奨サイト 。
コンテンツの変更を通知する
現在のページでコンテンツが変更された場合、いくつかのタイプの通知を使用してアクセシビリティAPIに通知することができます。これを行うには、メソッドUIAccessibilityPostNotificationを使用してユーザー補助APIに変更通知を送信する必要があります。
変更通知にはいくつかの種類がありますが、最も一般的に使用される2つは次のとおりです。
READING ORDER
VoiceOverの読み取り順序の再定義は、UIAccessibilityContainerプロトコルを使用して行われます。アイデアは、要素の読み取り順序を定義する要素のテーブルを持つことです。 shouldGroupAccessibilityElement属性を使用すると非常に便利なことがよくあるので、正確な順序がありますが、ビューの一部のみ(ビューの残りの部分はVoiceOverが提供するネイティブオーダーを使用して読み取ります)。
この機能を説明する最良の方法は、キーの順序が適切なものである必要のないキーボードです。希望する順序は次のとおりです:1、2、3、4、7、6、8、9、5。2つのビュー(青と灰色)が作成され、以下に定義されているように番号がグラフィカルに配置されます:
イラストと コードスニペット (Swift&ObjC)も、これら2つの説明を定義するために利用できます。