私はシンプルなUIView階層を持っています。ビューBとCを含む親ビューAがあります。すべてのビューをアクセシビリティ要素として設定すると、ビューAだけにアクセスできます。ビューBとCはクリックできません。アクセシビリティ要素であるためには、すべてのビュー(A、B、C)が必要です。アクセシビリティ要素としてのVoiceOver親ビューと子ビュー
すべてのビュー(A、B、C)を同じレベルにすることで実現できますが、私のアプリのビュー階層は変更を許可していません。
解決策はありますか?
私はシンプルなUIView階層を持っています。ビューBとCを含む親ビューAがあります。すべてのビューをアクセシビリティ要素として設定すると、ビューAだけにアクセスできます。ビューBとCはクリックできません。アクセシビリティ要素であるためには、すべてのビュー(A、B、C)が必要です。アクセシビリティ要素としてのVoiceOver親ビューと子ビュー
すべてのビュー(A、B、C)を同じレベルにすることで実現できますが、私のアプリのビュー階層は変更を許可していません。
解決策はありますか?
ビューA
はアクセシビリティ要素ですか?サブビューにアクセスできるようにするには、包含ビューはアクセシビリティ要素であるでなく、でなければなりません。あなたがアクセスできるようにする3番目のビュー、A
を、必要な場合は
view.isAccessibilityElement = false
は、それB
とC
の兄弟ビューにします。
私はBとCの兄弟を作ることができませんでした。これは既に私のアプリのビュー階層だったので、AとUIAccessibilityContainerプロトコルの親ビューを使って問題を解決しました。答えの下で見つけることができるソリューションの詳細。 – pawel221
最後に、UIAccessibilityContainerプロトコルを使用して、既存のビュー階層A(親)、B(子)、C(子)を使用して解決しました。私は別のビューを使用しました。つまり、Aの親であるXとその中にUIAccessibilityContainerプロトコルを実装しました。
- (BOOL)isAccessibilityElement {
return NO;
}
- (id)accessibilityElementAtIndex:(NSInteger)index {
return [self.voiceOverElements objectAtIndex:index];
}
- (NSInteger)accessibilityElementCount {
return self.voiceOverElements.count;
}
- (NSInteger)indexOfAccessibilityElement:(id)element {
return [self.voiceOverElements indexOfObject:element];
}
はあなたに見ている:ここで同じビュー(X)で見るX.
で作成されたUIAccessibilityElementsのアレイが作成のコード例にある次のように、UIAccessibilityContainerプロトコルが実装されましたUIAccessibilityContainerプロトコル? – ChrisCM