Iphone 无法使用UI自动化访问TableViewCell元素

Iphone 无法使用UI自动化访问TableViewCell元素,iphone,uitableview,automation,ios4,Iphone,Uitableview,Automation,Ios4,我有一个自定义的表格视图单元格,显示电话会议的详细信息。单元格构造函数的主体如下所示: - (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString*) reuseIdentifier { if(self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]) { self.contentView.isAcces

我有一个自定义的表格视图单元格,显示电话会议的详细信息。单元格构造函数的主体如下所示:

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString*) reuseIdentifier {
 if(self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]) {
      self.contentView.isAccessibilityElement = YES;
      self.contentView.accessibilityLabel = @"Blah";

      conferenceNameLabel = [[UILabel alloc] initWithFrame:CGRectZero];
      conferenceNameLabel.adjustsFontSizeToFitWidth = YES;
      conferenceNameLabel.font = [UIFont systemFontOfSize:14];
      conferenceNameLabel.isAccessibilityElement = YES;
      conferenceNameLabel.accessibilityLabel = @"Name";
      [self.contentView addSubview:conferenceNameLabel];

      conferenceDateLabel = [[UILabel alloc] initWithFrame:CGRectZero];
      conferenceDateLabel.adjustsFontSizeToFitWidth = YES;
      conferenceDateLabel.font = [UIFont systemFontOfSize:14];
      conferenceDateLabel.isAccessibilityElement = YES;
      conferenceDateLabel.accessibilityLabel = @"Date";
      [self.contentView addSubview:conferenceDateLabel];

      recurringIconView = [[UIImageView alloc] initWithFrame:CGRectZero];
      [recurringIconView setContentMode:UIViewContentModeScaleAspectFit];
      recurringIconView.isAccessibilityElement = YES;
      recurringIconView.accessibilityLabel = @"Icon";
      [self.contentView addSubview:recurringIconView];

      [self setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
 }

 return self;
}


使用UI自动化时,我可以使用辅助功能标签“Blah”访问内容视图。但我无法访问任何标签或ImageView。我无法使用UI自动化获取这些UI元素的原因是什么?

在脚本中,您应该能够使用logElementTree()注销每个单元格的可访问性层次结构:

这些子视图应与其辅助功能标签一起显示在记录的树中

如果您无法通过标签来处理这些元素,那么您应该能够通过它们在同级视图列表中的相对位置来获取它们:

var firstLabel = cell.elements()[0];

我将介绍UI自动化,并展示如何在my中测试这样的表视图的示例。

我将查看您的课程资料,也许会有一个“啊哈时刻”我会意识到我做了一些愚蠢的事情。我曾尝试记录元素树,但UI Automation报告说,我的单元格有一个长度为1的元素列表,单个元素是一个UIAEElement,其名称是会议呼叫的名称和日期,值为null。@Jonathan-这可能是因为它看起来像是表单元格辅助功能容器:。您可能需要重写自定义表格单元格中的UIAccessibilityContainer协议方法,以返回适当数量的标签和这些标签的数组。但是,请注意,这可能会降低视障用户对应用程序的可访问性。
var firstLabel = cell.elements()[0];