Ich versuche, ein Feature zu implementieren, mit dem VoiceOver ein ausgewähltes HTML-Element lesen kann, das in einer WKWebView
angezeigt wird.Verwenden von UIAccessibility zum Lesen der HTML-Auswahl
Mein erster Versuch abgeflachte die HTML in Text und verwendet dann AVSpeechSynthesizer()
eine AVSpeechUtterance
mit dem Text instanziiert zu lesen:
let synth = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: myFlattenedText)
if synth.isSpeaking {
synth.stopSpeaking(at: .immediate)
}
synth.speak(utterance)
Dies funktioniert im Allgemeinen, aber die Erfahrung, dass Voiceover gibt überlegen ist. Zum Beispiel hat mein HTML die Erreichbarkeit aktiviert MathJax. VoiceOver liest die kontextbezogenen mathematischen Gleichungen gut, während die Strategie, den HTML-Code in den Text einzubetten, dies nicht tut.
Ich experimentierte mit der Erstellung einer NSAttributedString
mit dem HTML-Fragment wie ausführlich here, aber das ist nicht besser.
Gibt es eine Möglichkeit, die VoiceOver-Funktionalität zu nutzen, vielleicht mithilfe von UIAccessibility
, die den HTML-Code für Barrierefreiheit genauso wie VoiceOver liest?
Ich _strongly_ vermute, dass Sie nur die Erfahrung erhalten, die Sie wollen, indem Sie eine Webansicht einbetten. – Justin
Ich benutze eine Webansicht. Wenn der Benutzer Inhalt in der Webansicht auswählt, möchte ich den Inhalt für den Benutzer lesen. Ich könnte hier entweder eine js oder eine native Lösung verwenden, wenn es einen Unterschied macht. Mit einer js-Lösung konnte ich jedoch nichts erreichen. –
Ich muss missverstanden haben. Warum können Benutzer nicht mithilfe von VoiceOver in der Webansicht navigieren? – Justin