ios - 如何让iOS VoiceOver读取View和 subview 作为一个整体

标签 ios uiview accessibility voiceover uiaccessibility

我有一个显示项目列表的 UITableView,它是 UITableViewCell 的子类。在那个单元格中,我有一个 UILabel 和 subview 的层次结构,如下所示:

UITableViewCell subclass
- UILabel a
- UILabel b
- UILabel c
- UIView subclass 1
    - UILabel 1a
    - UILabel 1b
- UIView subclass 2
    - UILabel 2a
    - UILabel 2b

我希望 VoiceOver 按此处显示的顺序朗读所有标签。在这里我应该注意,从视觉上看,UIView 子类中的标签顺序相反(例如,UILabel 1b 在 UILabel 1a 之上).

一些标签需要将“accessibilityLabel”属性设置为一些自定义字符串。它是在 UITableViewCell 的配置中完成的,一旦文本已知,直接标记或 subview 。我还将 shouldGroupAccessibilityChildren 属性设置为 YES。

现在,我的行为是:VoiceOver 读取顶级 UILabel(示例中的 a、b 和 c)。然后,如果我滑动以获取下一个元素,它会读取 UIView 子类 1,然后是 2,等等。读取这些子类时,读取顺序很好(UILabel 1a,然后1b 等)。

我能做到吗?还是用户绝对需要滑动?

最佳答案

我想你追求的是:

  1. 在 UITableViewCell 上设置 isAccessibilityElement = true
  2. accessibilityLabel 设置为您在 UITableViewCell 上想要的任何内容>

这会将整个 UITableViewCell 作为单个元素呈现给 VoiceOver(第 1 步)(这很棒,因为使用 VoiceOver 在此类单元格列表上导航更加高效且用户友好) ,并允许您准确自定义 VoiceOver 对单元格所说的内容(第 2 步)。

请注意,在第 2 步中,您还可以更有创意一些 - 不仅仅是按所需顺序说出所有标签并用逗号分隔,还可以添加一些词以使其更加用户友好(尽管我建议在这里要保守一点,不要陷入演示文稿过于“冗长”的情况,尤其是当用户在搜索某些内容时快速连续地浏览几个这样的单元格时——太冗长的标签会让人厌烦)。例如。如果它是一个购物应用程序,而不是“面包,1 美元,有货”(即仅连接 3 个标签并用逗号分隔),您可以说“面包 1 美元,有货”(字符串(格式: ) 在 Swift 中和在 Objective-C 中的 [NSString stringWithFormat:] 是你的 friend ;不要忘记本地化格式字符串。

当然,如果后面需要在cell中有一些按钮,那就有点复杂了。但这是另一个问题:-)

关于ios - 如何让iOS VoiceOver读取View和 subview 作为一个整体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33762030/

相关文章:

swift - 即使设置了约束,UIView 也会被裁掉

iphone - 从包含其他 View 的 UIView 导出高分辨率图像

ios - Swift iOS - 在文本字段内输入时按下 uiview

ios - TableViewCell(SubView) 触发按钮显示 Segue 到新 View Controller

ios - 将 UIView 输出为视频流

Ios - 如何在不同的 View Controller 中启动计时器

reactjs - React-Bootstrap Popover 不符合 ADA 标准

css - 如何在 CMS 的所见即所得内容生成器/编辑器中向非技术客户提供向内容添加 css 类/ID 的选项?

ios - 具有辅助功能的 UITableViewCell 中的 UICollectionView

objective-c - Xcode 4.4.1 & 核心情节 : Apple LLVM compiler error when compiling Core Plot demo apps