UITableViewのカスタムセクションヘッダービューにアクセシビリティ識別子を設定するにはどうすればよいですか?
背景として、UIAutomation内のテーブルビューの要素ツリーをログに記録すると、テーブルグループ要素(UIATableGroup)と混在するテーブルセル(UIATableCellインスタンス)のフラットリストが生成されるため、グループを識別できると、それらに属するセルを簡単に識別できます。グループ(順番に返されるため)。
セクションヘッダービューとして返されるカスタムビューにaccessibilityIdentifierを明示的に設定すると、accessibilityIdentifierプロパティが実際にそのビューに設定されていることを確認できます。
カスタムセクションヘッダービュー(もちろん、実際のテーブルビューには表示されます)をフィードするメソッドは次のとおりです。
- (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger)sectionNumber
{
UIView *headerView = [self someMethodToRetrieveHeaderView];
// This line is logging that indeed, the accessibility identifier is set.
NSLog(@"Header view accessibility identifier is: '%@' for section number: %d",
headerView.accessibilityIdentifier, sectionNumber);
return headerView;
}
問題は、logElementTree()
このテーブルビューに対してUIAutomationテストでJavaScriptを呼び出すと、そのセクションヘッダービュー内のテキストコンテンツから派生した名前を持つUIATableGroup要素が返されることです(つまり、UIAccessibilityLabelヒューリスティックにフォールバックします)。そのセクションヘッダーにはセグメント化されたコントロールが含まれているため、一貫性のないaccessibilityLabel値が取得されます。したがって、そのすべてをバイパスして、明示的な識別子を割り当てたいと思っています。
代わりに、自分の明示的なaccessibilityIdentifierをUIATableGroupのnameプロパティとして表示させるにはどうすればよいですか?