大多数浏览器和
Developer App 均支持流媒体播放。
-
打造辅助阅读体验
文本的样式和布局是出色阅读体验的标志性特点。CoreText 和 TextKit 等技术为您提供了创建出色文本布局所需的工具。了解如何通过采用辅助功能阅读内容协议、添加自动翻页和自定语音输出,为旁白打造同样出色的辅助体验。
资源
相关视频
WWDC20
-
下载
(创建一个良好的辅助阅读体验) 大家好 欢迎大家参加 创建一个良好的辅助阅读体验 我是Darren Minifie 我是Accessibility 团队的项目工程管理人员
一个优秀的app的特质之一是 体验优秀的用户界面 它涉及到布局设计和字体 特别是那些以长篇阅读 为主要功能的app 实现一个自定义的文字布局 你经常需要使用一些低水平的技术 比如Core Text 和TextKit 本次演讲 你将会了解 你需要知道的API和技术 来为旁白创建一个 良好的辅助阅读体验
(阅读内容协议 自定义朗诵) 首先 我们来聊一下阅读内容协议 使用本协议 来让你的文字内容更易获取 下面 我们来讲一下自动翻页 在你的app中 使用旁白来翻页 最后 我们将会讨论 你能使用的API 来自定义旁白朗诵你的内容的方式
本次演讲 我们将会使用如下app案例 来介绍你需要知道的技术
这是一个基于页面设计的简单app 每个页面都包含一张图片 一个标题 一个副标题 和一些详细的文字
为了让你的app更易被获取 你需要先使用旁白进行试听
最方便的方法是 在你的辅助捷径中加入旁白 先打开设置 点击访问 向下滚动至访问捷径 然后点击旁白 现在 根据设备的不同 你需要点击主画面按钮 或是侧边按钮三次 来快速启用和禁用旁白
我们来看一下旁白 是如何在示例app中使用的
旁白开启
当我用手在屏幕上拖动时 旁白有一个音效反馈 告诉我这里没有内容 要让我们的文本阅读辅助
我们要做的第一件事是 使用 UIAccessibilityReadingContent协议 这个协议包含4个核心的方法
AccessibilityLineNumber(forpoint 索要返回触摸点的所在行数 AccessibilityContent(forLineNumber 以及accessibilityFrame(forLineNumber 分别索要返回某行的 文字内容和行的高宽 最后 accessibilityPageContent 向你索要返回 整个页面有用的内容
现在我们来看一下 如何在我们的app实现 UIAccessibilityReadingContent协议
示例app的每个页面 都是SessionItemView 的一个实例
这个视图有4个子视图 一个图像视图 一个标题标签 一个标识符标签 以及一个会话详情视图
我们额外声明了一个layout枚举 这会帮助我们 实现相应的方法
第一件我们要做的事情是 通过在页面视图的初始化配置 isAccessibilityElement为true 将我们的页面视图 设成一个辅助元素
接下来 我们开始实现 阅读内容协议 第一个函数是 accessibilityLineNumber(forpoint
首先 我们使用过去的行数 执行hitTest方法
如果最终的视图是 我们已知的子视图之一 我们会映射到相应的layout枚举值 最后 我们返回rawValue 这是旁白能理解的描述
接着 实现 AccessibilityContent(forLineNumber方法 首先 初始化一个layout枚举实例 使用switch函数将值 映射到相应的我们已知的子视图 最后我们返回accessibilityLabel 就是返回子视图的文字
accessibilityFrame(forLineNumber 方法的实现非常简单 首先 使用我们已知的rawValue 初始化一个layout枚举实例 使用switch函数将值 映射到相应的我们已知的子视图 最后 我们返回accessibilityFrame 它表示了一行的宽和高
最后 我们来实现 accessibilityPageContent方法 我们从我们已知的子视图 收集文字内容 然后已单个字符串的形式返回
完成了阅读内容协议 我们来看下如何 在app内使用旁白
可获取的拖放 演讲241 拖放是一个强大的API 它允许app分享和交互数据 这一次 我在屏幕中拖动我的手指 旁白朗诵并 高亮了相应的文字内容
下面 我们来讲一下自动翻页 当旁白的 阅读全部命令被触发了 旁白将会从头到尾 朗诵所有的文字内容 旁白这是就可能需要 在你的app中自动翻页 实现自动翻页的方法 你需要知道两个 accessibility API 首先 你应该在你的页面视图使用 causesPageTurn辅助特征方法 第二 你应该实现 AccessibilityScroll控制方向的方法 旁白就能 在你的app里自动翻页了 我们来看一下如何 在我们的app实现自动翻页的功能
首先 我们需要实现 causesPageTurn辅助特征方法 我们在页面视图的初始化函数中 配置辅助特征
接下来 我们实现 accessibilityScroll和direction 我们根据 direction参数不同 对应到switch的 相应事件来处理 如果direction的值是 上一个或者左 我们让代理返回到前一页 如果成功的话 我们会向旁白发送一则 pageScrolled消息
如果direction的值 是右或下一个 我们让代理翻到下一页 如果成功的话 我们会向旁白发送一则 pageScrolled消息
我们来看一下app 是如何实现自动翻页功能的
可获取的拖放 演讲241 拖拽是一个强大的API 它允许app之间分享和交流数据 不论你决定如何在app实现 拖拽的动作 有一个帮有需要的用户操作的方法 学习我们为iOS设计的 易用拖拽功能的更多细节
AVSpeechSynthesizer 让iOS说话 演讲236
我们最后一个主题是自定义演讲 你可能需要控制app内 旁白朗诵内容的方式 你需要使用2个阅读内容协议 的替代方法来实现 这些方法会返回 NSAttributedStrings 而不是简单的字符 通过支持合适的辅助属性 你能对旁白朗读你的内容 的方式进行各种细节控制
比如 你可能需要用另一种语言 来朗诵某个段落 这时 你就需要使用 accessibilitySpeechLanguage属性 和相应语言的识别 这时 旁白会使用最适合 的语言来朗诵你的文字
巴黎凯旋门
更进一步 你可能想更深入了解如何 控制旁白朗诵你的内容 我们来看下实现步骤 你可以使用IPA和 accessibilitySpeechIPANotation 属性来描述你的文章 约塞米蒂国家公园
所以 想要用旁白 创建良好的阅读体验 你的文字内容需要让用户可以获取 你需要遵循 UIAccessibilityReadingContent协议 接下来 是自动翻页功能 这样旁白就能 从头到尾 朗诵你app的所有内容了 最后 为了控制旁白 朗诵你内容的方式 你可以考虑使用 阅读内容协议中的 NS属性的strings版本 的方法 并支持最合适的 accessibility属性
想要了解这个话题的更多内容 请访问演讲的链接
谢谢你的观看
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。