2016-11-11 7 views
1

VoiceOver를 사용하여 WKWebView에 표시된 선택된 HTML을 읽는 기능을 구현하려고합니다.UIAccessibility를 사용하여 HTML 선택 읽기

내 최초의 시도는 텍스트로 HTML을 평평하고 텍스트 인스턴스화 AVSpeechUtterance을 읽을 수 AVSpeechSynthesizer()을 사용 :

let synth = AVSpeechSynthesizer() 
let utterance = AVSpeechUtterance(string: myFlattenedText) 
if synth.isSpeaking { 
    synth.stopSpeaking(at: .immediate) 
} 
synth.speak(utterance) 

이 일반적으로 작동하지만, VoiceOver를 제공하는 경험은 우수합니다. 예를 들어 내 HTML에 접근성이 설정되어 있습니다 (MathJax). VoiceOver는 상황에 맞는 수학 방정식을 읽는 좋은 직장이지만 html을 텍스트로 병합하는 전략은 그렇지 않습니다.

자세한 내용은 here과 같은 html 조각을 사용하여 NSAttributedString을 만들었지 만 더 좋지는 않습니다.

어쨌든 UIAccessibility을 사용하여 VoiceOver 기능을 활용할 수있는 방법이 있나요? VoiceOver 기능과 동일한 방식으로 접근성 지원 HTML을 읽습니까?

+0

나는 웹보기를 임베드하여 원하는 경험을 얻을 수있을 것이라고 생각합니다. – Justin

+0

webview를 사용하고 있습니다. 사용자가 webview에서 콘텐츠를 선택하면 콘텐츠를 사용자에게 읽고 싶습니다. 차이가 나는 경우 js 나 네이티브 솔루션을 사용할 수 있습니다. 하지만 js 솔루션으로는 아무데도 갈 수 없었습니다. –

+0

나는 오해 했음에 틀림 없다. VoiceOver를 사용하여 웹보기를 탐색 할 수없는 이유는 무엇입니까? – Justin

답변

0

WebKit의 MathJax 지원과 신중하게 고려한 UIAccessibility의 지원이 표시됩니다. 내가 찾은 가장 최근의 문서에 따르면 these properties are not accessible to web developers은 iOS 개발자로서 UIAccessibility 요소 계층 구조를 통과하여 MathJax 콘텐츠의 accessibilityLabelaccessibilityValue을 덤프 할 수 있어야합니다.

+0

제안과 링크에 감사드립니다. 나는 (내가 선택에서 html로 임시 webview를 만드는) 해결책으로가는 길에 있다고 생각했지만이 임시 webview 나 원래 webview에서 접근성 속성을 얻을 수없는 것 같습니다. 'accessibilityLabel','accessibilityValue','accessibilityElements'는 모두 nil입니다. –

+0

@JonBrooks'accessibilityChildren'을 통해 되풀이 한 적이 있습니까? – Justin

+0

NSAccessibility에서 UIAccessibility가 아닌'accessibilityChildren' 속성 만 보입니다. 그것은보기 이외의 다른 속성입니까? –