mrq*_*335 5 accessibility ios voiceover uiaccessibility swift
通常,VoiceOver
正确读取加载的网页内容,WKWebView
并且可以读取按钮和链接。
但是,?当我说WKWebView
对UITableViewCell
,并显示在UITableVIew
,VoiceOver
无法识别它。
根据苹果的tableview文档,为了让每个内容都分别UITableViewCell
被识别VoiceOver
,需要将isAccessibilityElement
cell设置为false isAccessibilityElement
,view设置为true。
但如果isAccesibilityElement
ofWKWebView
设置为 true,视图本身是聚焦的,我们无法识别内部网页内容。
此外,VoiceOver
在加载 Web 内容后第一次启用时,它执行了可以识别 Web 内容的奇怪行为。
怀疑是VoiceOver
内容识别时序的问题,我试了一下运行
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)
Run Code Online (Sandbox Code Playgroud)
或者
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil)
Run Code Online (Sandbox Code Playgroud)
加载网页内容后,却没有得到好的结果。
是否有处理内容的一个好办法wkwebview
上tableView
到VoiceOver
?
因此,我将解释您所看到的行为。本质上,VoiceOver 将仅关注树中的第一个辅助功能元素。因此,作为可访问性元素的任何视图都不会使其作为可访问性元素的子视图成为焦点。
至于你的情况,我很好奇你的情况。我发现您可能需要提供更多详细信息。当我绘制一个表格视图时,我会在一个视图中绘制多个 WKWebView,这确实很奇怪。
Web 视图的典型标记是不将任何内容设置为可访问性元素,并让 WebView 确定其中哪些元素可访问。WKWebView 应该负责将 HTML 内容报告为适合您的本机可访问性元素。做任何其他事情都会破坏 WKWebView 的目的。但是,如果您在一个应用程序中有多个 Web 视图,这可能会使事情变得混乱。最终,如果它不能按照我概述的方式工作(只需保留所有内容,并将所有内容标记为“不是”可访问性元素),这将是一个错误,但您必须处理这个错误。
然后,解决方案将覆盖您的 webview 的 UIAccessibilityContainer 协议,并为其提供自定义反馈。不理想,会很痛苦。更多细节会有所帮助,但至少现在您可以更多地了解正在发生的事情。
另一个简单的解决方案是,如果您的 webview 中的内容非常简单,您可以将accessibility元素设置为true,并通过accessibilityLabel、accessibilityValue和accessibilityTraits提供整个webview的内容描述。只要确保您掌握了所有信息,并且任何操作仍然可行!
归档时间: |
|
查看次数: |
2883 次 |
最近记录: |