【发布时间】:2012-12-31 17:47:16
【问题描述】:
如何在 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;
}
问题在于,当我在针对此表视图的 UIAutomation 测试中在 JavaScript 中发出 logElementTree() 调用时,它会返回一个 UIATableGroup 元素,该元素的名称源自该部分标题视图内的文本内容(即下降回到 UIAccessibilityLabel 启发式)。因为该部分标题中有一个分段控件,所以我得到不一致的可访问性标签值。因此,我希望绕过所有这些并分配一个明确的标识符。
如何强制我自己的显式可访问性标识符显示为 UIATableGroup 的 name 属性?
【问题讨论】:
标签: uitableview ios6 ios-ui-automation uiaccessibility