6

我有一个电子邮件客户端应用程序,我正在更改我们显示电子邮件附件的方式。以前我们将它们放在电子邮件查看器顶部的可滚动列表中;现在我们正在移动它们,以便它们以列表的形式显示在电子邮件内容的底部。由于与 UIWebView 控件相关的原因,我有必要将这些附件实现为 HTML 代码,以编程方式附加到原始电子邮件的 HTML 中(而不是像普通人那样做,每个附件只是一个 UIView IOS)。

我现在正在尝试为这些 HTML 元素配置可访问性并遇到一些问题。每个“附件”由一个类似按钮的背景组成,它实际上由 3 个图像构成:一个用于按钮的左侧,一个用于按钮的右侧,以及一个可拉伸的中间部分(这允许按钮在不扭曲边缘的情况下拉伸宽度)。“按钮”上还有一个回形针图像和一个右箭头图像,以及两个用于显示文件名及其大小的子 DIV。

问题是我想让包含所有这些子元素的外部 DIV 成为 Voiceover 唯一可聚焦的东西,并且我希望能够控制 Voiceover 为这个 DIV 宣布的内容(这样我可以包括文件名、大小、当前是否正在下载等)。然而,Voiceover 唯一想要关注的似乎是构成按钮背景的三个子图像(它们由它们的文件名宣布)和两个显示文件名和文件大小的子 DIV。如果我通过设置从 Voiceover 中隐藏所有这些子元素aria-hidden="true",则根本没有任何焦点。如果我设置aria-hidden="false"在外部 DIV 上,DIV 仍然没有聚焦。

是否有任何方法可以使 Voiceover 聚焦 DIV,即使它不包含 Voiceover 将专注于其自身的任何内部 HTML 内容?我想我可以破解一个解决方案,在 DIV 上拉伸一个完全透明的 PNG,并使其成为唯一带有 aria-hidden="false" 的内部元素,但即便如此,我也不确定如何让 Voiceover 读取其他内容文件的名称。

更新:好的,看来我可以通过添加role="button"我的 DIV 来实现这一点,同时保留所有的 sub-elements aria-hidden="true"。整个 DIV 现在是可聚焦的,但它仍然宣称自己是一个“按钮”(我希望它说“附件”而不是类型,但如果需要,我可以使用“按钮”)。我现在遇到的主要问题是 Voiceover 似乎忽略了该aria-label属性,而是读出了包含在我的子 DIV 中的任何文本。有什么方法可以让 Voiceover 读取aria-label我明确设置的属性?

4

0 回答 0