在UITableView标头中包含的UIImageView上设置accessibilityLabel

kev*_*boh 10 cocoa-touch accessibility objective-c ios voiceover

我有一个UITableView我建立的loadView.我所做的一件事loadView就是创建一个UIView充当表头并填充其中的东西UIImageView.图像视图包含一个风格化标题的图像,因此我想为VoiceOver用户添加一个辅助功能标签.但是,我无法让VoiceOver"聚焦"在图像上以便读取标签,并且Accessibility Inspector不会响应在模拟器中单击图像.我的(缩写)代码如下:

... in -loadView ...
// Make header view
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(...)];
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[self titleImage]];
titleImageView.accessibilityLabel = [self accessibilityLabelForTitleImage];
[headerView addSubview:titleImageView];

// Make table view
self.tableView = [[UITableView alloc] initWithFrame:CGRect(...) style:UITableViewStylePlain];
self.tableView.tableHeaderView = headerView;
... code continues ...
Run Code Online (Sandbox Code Playgroud)

我已经介入gdb并accessibilityLabelForTitleImage返回一个字符串.po [titleImageView accessibilityLabel]打印出正确的字符串,但我仍然无法专注于图像视图.请注意,视图本身会出现并作出适当的响应.

我错过了什么吗?有没有办法强制VoiceOver确认图像视图?

Abh*_*ngh 15

在配音中,为了使元素可访问: -

  1. 你必须将setIsAccessibilityElement属性设置为true,我在你的代码中找不到.

  2. 另一个重要的一点是,要使子元素(子视图)可访问,您必须单独使它们可访问,而父元素不可访问(您还必须指定它).

  3. 在自定义单元格中实现UIAccessibilityContainer协议.

如果我继续这将是一个很大的故事.请通过苹果推荐这个辅助功能配音.

希望这可以帮助.

  • 将`isAccessibilityElement`设置为true就可以了.我通读了文档 - 无法相信我错过了它.谢谢! (2认同)

小智 5

我使用 KIF 来测试我的 IOS 应用程序。在我的 tableview 中,我为 tableview.accesssibilityIdentifier 而不是 tableview.accessibilityLabel 赋值。它对我有用。想试一试吗?