为 UITableView header 文本设置 accessibilityLabel

Setting accessibilityLabel for UITableView header text

我正在尝试找到一种方法来为我的表格视图的 header 文本设置 accessibilityLabel

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {        
    return @"Table View Header";
}

就我而言,我的可访问性标签与返回的表格视图的 header 文本不同。

要设置 accessibilityLabel 属性,在 header 视图本身的定义中写入文本 就像我在代码中所做的那样通过添加可访问性元素在下面的代码段中:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    CGRect headerViewFrame = CGRectMake(0.0, 0.0, tableView.frame.size.width, 44.0);
    UIView * headerView = [[UIView alloc] initWithFrame:headerViewFrame];

    UILabel * headerViewLabel = [[UILabel alloc] initWithFrame:headerViewFrame];
    headerViewLabel.text = @"Table View Header";
    [headerView addSubview: headerViewLabel];

    UIAccessibilityElement * a11yHeader = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:headerView];
    a11yHeader.accessibilityFrameInContainerSpace = headerView.frame;
    a11yHeader.isAccessibilityElement = YES;
    a11yHeader.accessibilityLabel = @"my new header text for accessibility";
    a11yHeader.accessibilityTraits = UIAccessibilityTraitHeader;

    headerView.accessibilityElements = @[a11yHeader];

    return headerView;
}

试一试并根据您的应用进行调整。

返回到 ObjC 并不容易,但是现在,您可以按照此基本原理 为 UITableView header text 设置 accessibilityLabel。

或者,您也可以使用 UITableViewHeaderFooterViewtextLabel 属性。

代码示例:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    UITableViewHeaderFooterView *headerView = [[UITableViewHeaderFooterView alloc] init];
    headerView.textLabel.text = @"tableview header";
    headerView.isAccessibilityElement = YES;
    headerView.accessibilityLabel = @"tableview header for accessibility";

    return headerView;
}