【发布时间】:2019-02-28 22:04:03
【问题描述】:
我正在尝试实现一项功能,该功能将使用 VoiceOver 读取显示在 WKWebView 中的选定 HTML 片段。
我最初尝试将 html 展平为文本,然后使用 AVSpeechSynthesizer() 读取用文本实例化的 AVSpeechUtterance:
let synth = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: myFlattenedText)
if synth.isSpeaking {
synth.stopSpeaking(at: .immediate)
}
synth.speak(utterance)
这通常有效,但 VoiceOver 提供的体验更出色。例如,我的 HTML 具有启用辅助功能的 MathJax。 VoiceOver 在阅读上下文数学方程式方面做得很好,而将 html 展平为文本的策略则不然。
我尝试使用 html 片段创建一个NSAttributedString,详细信息为here,但这并没有更好的效果。
有没有办法利用 VoiceOver 功能,可能以某种方式使用UIAccessibility,以与 VoiceOver 相同的方式读取启用了可访问性的 HTML?
【问题讨论】:
-
我强烈怀疑只有通过嵌入 Web 视图才能获得所需的体验。
-
我正在使用网络视图。当用户在 webview 中选择内容时,我想将内容读给用户。我可以在这里使用 js 或本机解决方案,如果它有所作为的话。不过,我无法使用 js 解决方案。
-
我一定是误会了。为什么用户不能使用 VoiceOver 浏览网页视图?
-
使用 VoiceOver 效果很好。我们的应用程序还允许用户通过菜单命令选择并阅读内容。我对这个功能并不疯狂,但我不会打那些电话:)
标签: ios swift voiceover uiaccessibility avspeechsynthesizer