无法使用UI Automation访问TableViewCell元素

时间:2010-12-02 17:29:49

标签: iphone uitableview automation ios4

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

- (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 Automation时,我可以使用辅助功能标签“Blah”访问内容视图。但我无法访问我的任何标签或我的ImageView。我无法使用UI自动化获取这些UI元素的任何原因?

1 个答案:

答案 0 :(得分:4)

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

cell.logElementTree();

这些子视图应显示在该记录的树中,以及它们的可访问性标签。

如果你以某种方式不能通过他们的标签来处理这些元素,你应该能够通过它们在兄弟视图列表中的相对位置来获取它们:

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

我浏览了UI自动化,并展示了如何在course on iTunes U中测试这样的表格视图的示例。