我有一个电子邮件客户端应用程序,我正在改变我们显示电子邮件附件的方式。以前我们在可滚动列表中将它们放在电子邮件查看器的顶部;现在我们正在移动它们,以便它们显示为电子邮件内容底部的列表。由于与UIWebView控件相关的原因,我有必要将这些附件实现为HTML代码,这些代码以编程方式附加到原始电子邮件的HTML中(而不是像普通人那样执行它们,其中每个附件只是一个UIView in的iOS)。
我现在正在尝试为这些HTML元素配置辅助功能并遇到一些问题。每个“附件”由按钮式背景组成,实际上由3个图像构成:一个用于按钮的左侧,一个用于按钮的右侧,中间部分是可伸缩的(这允许按钮到拉伸宽度而不扭曲边缘)。还有一个纸夹图像和一个右箭头图像放在“按钮”上,还有两个子DIV用于显示文件名及其大小。
问题在于我想让包含所有这些子元素的外部DIV成为Voiceover唯一可以关注的东西,我希望能够控制画外音为这个DIV宣布的内容(这样我就可以包含文件名,大小,是否正在下载等等。然而,似乎画外音想要关注的唯一事情是组成按钮背景的三个子图像(并且它们由文件名公布)以及显示文件名和文件大小的两个子DIV。如果我通过设置aria-hidden="true"
隐藏了画外音中的所有这些子元素,那么根本不会集中注意力。如果我在外部DIV上设置aria-hidden="false"
,则DIV仍然没有聚焦。
是否有任何方法可以让幻灯片可以通过画外音进行聚焦,即使它不包含画外音可以专注于其自身的任何内部HTML内容?我想我可以破解一个解决方案,我在DIV上拉伸一个完全透明的PNG并使其成为唯一一个带有aria-hidden =“false”的内部元素,但即便如此,我也不确定如何让Voiceover读取除了文件的名称。
更新好的,似乎我可以通过在我的DIV上添加role="button"
同时保留所有子元素aria-hidden="true"
来实现此目的。整个DIV现在都是可调焦的,但它仍然宣称自己是一个“按钮”(我希望它说“附件”而不是类型,但如果需要,我可以使用“按钮”)。 我现在遇到的主要问题是,画外音似乎忽略了aria-label
属性,而是读出了我的子DIV中包含的任何文本。有什么方法可以让Voiceover读取我明确设定的aria-label
属性吗?