10

我有一个UITableView我内置的loadView. 我所做的其中一件事loadView是创建一个UIView作为表头并将 a 填充UIImageView到其中的内容。图像视图包含一个风格化标题的图像,因此我想为 VoiceOver 用户添加一个可访问性标签。但是,我无法让 VoiceOver 在图像上“聚焦”以读取标签,并且辅助功能检查器不会响应在模拟器中单击图像。我的(缩写)代码如下:

... 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 ...

我已经进入 gdb 并accessibilityLabelForTitleImage返回一个字符串。po [titleImageView accessibilityLabel]打印出正确的字符串,但我仍然无法专注于图像视图。请注意,视图本身会根据需要显示和响应。

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

4

3 回答 3

18

在 Voice-Over 中,为了使元素可访问:-

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

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

  3. 在您的自定义单元中实现 UIAccessibilityContainer 协议。

如果我继续下去,这将是一个大故事。请参考苹果的这个无障碍语音

希望这可以帮助。

于 2012-05-17T20:46:43.367 回答
5

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

于 2014-06-05T03:16:18.273 回答
0

画外音有时会变得令人讨厌,仅通过设置isAccessibilityElement可能无法正常工作。

在这种情况下,尝试设置accessibilityElements父视图并将子视图包含在数组中,如下所示:

parentView.accessibilityElements = [childView1, childView1, childView1]

这样做还可以确保以您想要的顺序读取可访问性项目。

于 2018-04-11T14:50:24.213 回答