使用UIAccessibility读取HTML选择

问题描述 投票:1回答:1

我正在尝试实现一个功能,该功能将使用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?

ios swift voiceover uiaccessibility avspeechsynthesizer
1个回答
0
投票

您所看到的是WebKit的MathJax支持与经过仔细考虑的UIAccessibility支持配对。虽然我发现的最新文档表明these properties are not accessible to web developers,作为iOS开发人员,你应该能够遍历UIAccessibility元素层次结构来转储你的accessibilityLabel内容的accessibilityValueMathJax

编辑:正如@mattsven指出的那样,问题是WKWebView内容是在远程进程中呈现的,因此不会将其可访问性元素公开给包含的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.