使VoiceOver for iOS忽略HTML页面上的元素?

时间:2018-10-02 08:30:22

标签: html ios css accessibility voiceover

我正在努力改善Web应用程序的可访问性。有一个包含复选框,标签和该复选框中的图片的按钮,当在启用VoiceOver的情况下通过在iPad上左右滑动来选择它时,VoiceOver会突出显示按钮中的单个元素,而不是整个按钮。元件。我试图用几种不同的属性来样式化CSS,以使iOS中的VoiceOver功能忽略这些单独的元素。

aria-hidden:true;
speak:none;
user-select:none;
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Safari */
-khtml-user-select: none; /* Konqueror HTML */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none; /* Non-prefixed version, currently
                   supported by Chrome and Opera */

他们没有任何区别。我已经清除了Safari中的缓存以确保CSS正确更新,并且在桌面上我可以看到这些属性确实存在于不同的元素中,但是iOS仍然决定忽略CSS并读出这些元素/允许那些元素无论如何被选择。我所做的所有其他研究表明,禁用VoiceOver的唯一其他方法是在功能完善的应用程序中明确禁用它。我还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

您有正确的想法,只是使用不当。 <button aria-hidden="true">voiceover won't see me</button> 不是CSS属性,它是您放在html标记上的属性。因此,要隐藏按钮,您将拥有

<input type="checkbox">
<label>i like puppies</label>

但是,请确保复选框的标签以编程方式与复选框本身相关联,而不仅仅是在DOM中与其物理相邻。如果它们没有关联,则VoiceOver不会在整个复选框和标签周围绘制边框。

不正确:

<input type="checkbox" id="myid">
<label for="myid">i like puppies</label>

正确:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim CC As Range
Dim CB As Range

Application.EnableEvents = False
If Not Intersect(Range("C16:C101"), Target) Is Nothing Then
   For Each CC In Intersect(Range("C16:C101"), Target)
        If CC.Value <> "" Then
           CC.Offset(, -2).Value = Date & " "
           CC.Offset(, -2).NumberFormat = "mm/dd/yy"
        End If
   Next CC
End If
Application.EnableEvents = True

Application.EnableEvents = False
If Not Intersect(Range("C16:C101"), Target) Is Nothing Then
    For Each CC In Intersect(Range("C16:C101"), Target)
        If CC.Value <> "" Then
           CC.Offset(, -1).Value = Time & " "
           CC.Offset(, -1).NumberFormat = "hh:mm"
        End If
    Next CC
End If
Application.EnableEvents = True

End Sub