通常,VoiceOver
可以正确读取加载了WKWebView
的Web内容,并且可以读取按钮和链接。
但是,当我在WKWebView
上添加UITableViewCell
并显示在UITableVIew
中时,VoiceOver
无法识别它。
根据苹果的tableview文件,为了使UITableViewCell
上的每个内容分别被VoiceOver
识别,
必须将单元格的isAccessibilityElement
设置为false,并将要识别的视图的isAccessibilityElement
设置为true。
但是如果将isAccesibilityElement
的WKWebView
设置为true,则视图本身将处于焦点状态,并且我们无法识别内部Web内容。
另外,在加载Web内容后首次启用VoiceOver
时,它执行了奇怪的行为,即可以识别Web内容。
我怀疑VoiceOver
内容识别时间的问题,我尝试运行
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)
要么
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil)
加载Web内容后,但没有得到很好的结果。
有什么好方法可以处理
wkwebview
到tableView
上VoiceOver
中的内容? 最佳答案
因此,我将解释您所看到的行为。本质上,VoiceOver仅将树中的第一个可访问性元素作为焦点。因此,作为可访问性元素的任何视图都不会使其子元素成为可访问性元素的焦点。
现在关于您的情况,我对您的情况感到好奇。我发现您可能需要提供更多详细信息。当我描绘一个表格视图时,我在一个视图中描绘了多个WKWebView,这确实很奇怪。
Web视图的典型标记是将NOTHING设置为可访问性元素,然后让WebView确定其中的哪些元素可访问。 WKWebView应该注意将HTML内容报告为适当的本机可访问性元素。做其他任何事情都会破坏WKWebView的运行状况。但是,如果您在一个应用程序中有多个Web视图,则可能会使事情变得糟透了。最终,如果它不能按我概述的方式工作(仅将其保留,并将所有内容标记为“不是”可访问性元素),那将是一个错误,但是您必须处理一个错误。
然后,解决方案将覆盖您的Web视图的UIAccessibilityContainer协议,并为其提供自定义反馈。不理想,会很痛苦。更多细节会有所帮助,但是至少现在您可以对发生的事情有所了解。
另一个简单的解决方案是,如果Web视图中的内容非常简单,则可以将accessibility元素设置为true,并通过accessibilityLabel,accessibilityValue和accessibilityTraits提供整个Webview内容的描述。只要确保您捕获了所有信息,并且所有操作仍然可以执行!
关于ios - 如何为Tableview上的Webview内容启用VoiceOver,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47324568/