「2本指フリックダウン」ジェスチャが実行されたときに、iPadのアクセシビリティのVoiceOver機能が要素を読み取る順序を変更することは可能ですか?
3つのラベルとボタンを含む添付画像の場合、VoiceOverは次のように要素を読み取ります。
ラベル1->ラベル2->ボタン->ラベル3
順序をに変更できますか、
ラベル1->ラベル2->ラベル3->ボタン
「2本指フリックダウン」ジェスチャが実行されたときに、iPadのアクセシビリティのVoiceOver機能が要素を読み取る順序を変更することは可能ですか?
3つのラベルとボタンを含む添付画像の場合、VoiceOverは次のように要素を読み取ります。
ラベル1->ラベル2->ボタン->ラベル3
順序をに変更できますか、
ラベル1->ラベル2->ラベル3->ボタン
この例でこれを実現する最も簡単な方法は、3つのラベルを透明なUIView
サブクラスに配置して、ラベルのコンテナーとして機能させることです。このサブクラスは、VoiceOverにその解釈方法を知らせるために適切に設定する必要があります。デプロイメントのターゲットがである場合はiOS6
、このサブクラスの「アクセシビリティの子をグループ化する必要がある」という質問に答えることができます。
-(BOOL)shouldGroupAccessibilityChildren{
return YES;
}
以下の場合、コンテナサブクラスにアクセシビリティ要素であるものだけが含まれるiOS6
ことを除いて、より複雑になります。次のように実装できます。UIView
UILabels
-(BOOL)isAccessibilityElement{
return NO;
}
-(NSInteger)accessibilityElementCount{
return self.subviews.count;
}
-(id)accessibilityElementAtIndex:(NSInteger)index{
return [self.subviews objectAtIndex:index];
}
-(NSInteger)indexOfAccessibilityElement:(id)element{
return [self.subviews indexOfObject:element];
}
私はこのサンプルコードをテストしました、そしてそれはあなたが探していることをします、あなたが何か説明が必要な場合はコメントを追加してください。物事をよりアクセスしやすくするために常に喜んでお手伝いします。
に設定してみshouldGroupAccessibilityChildren
ましYES
たが、うまくいきませんでした。
私にとってうまくいったのは、親ビューのアクセシビリティラベルを直接設定することでした(すべてのアイテムを1回の移動/ 1回のVoiceOverジェスチャで読み取る必要があるため)。
[cell setAccessibilityLabel:[NSString stringWithFormat:@"%@, %@", cityLabel, temperatureLabel]];
上記のコードスニペットは、Appleのドキュメント「テーブルビューセルのアクセシビリティの強化」からのものです。
Swiftでは、IBOutletを親UIViewにアタッチしてから、shouldGroupAccessibilityChildrenをtrueに設定するだけで十分です。
abc.shouldGroupAccessibilityChildren = true
isAccessibilityElement = true
グループ化も設定しても効果がないことに注意しました。同様に、ストーリーボードまたはxibのアクセシビリティチェックボックスをオンにすると、グループ化が行われなくなります。
絵コンテでできると思います。VoiceOverの順序は、ドキュメントのアウトライン内のビューの順序によって決まります。
ビュー階層内のビューを正しい順序でドラッグアンドドロップするだけです。