首页 文章

如何强制VoiceOver不读取视图控制器 Headers 的“ Headers ”字

提问于
浏览
1

在阅读title / accessibilityLabel后,有没有办法强制VoiceOver不读取视图控制器 Headers “ Headers ”字?

目前,该行为是默认的 . 如果我将 Headers 设置为“我的面板”,则语音将会读取如下内容:

“我的小组”......“ Headers ”

我相信这是在一些UI元素上设置的可访问性特征UIAccessibilityTraitHeader的结果,但我不知道哪个元素具有这个特征 . 我的视图控制器嵌套在导航控制器中 . 请不要问为什么我需要删除这个单词 . 这是要求,我需要摆脱它 .

2 回答

  • 1

    大卫的评论是正确的答案 . 您应该在语义上使用 UIElement 类 . 换句话说,如果文本"My Panel"不是视图的 Headers ,那么它在语义上是什么?获得该问题的答案后,您可以重新设计视图以使用该类型的元素,并进行适当的样式设置 .

    但是,根据您提供的所有信息,它似乎在语义上是一个 Headers ,因此屏幕阅读器正在做适当的事情 .

    谁给你这个要求可能不知道他们在说什么 . 这种类型的要求通常来自对可访问的UI / UX设计不熟悉的人 .

  • 0

    您可以自定义此 Headers 视图,并在自定义视图中实现 accessibilityElementDidBecomeFocused 方法,此视图确实变为焦点并将 UIAccessibilityLayoutChangedNotification 发布到 VoiceOver 并将焦点置于其自身,然后返回特征 UIAccessibilityTraitNone

    - (void)accessibilityElementDidBecomeFocused {
           UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,   self);
    }
    
    - (UIAccessibilityTraits)accessibilityTraits {
        return UIAccessibilityTraitNone;
    }
    

相关问题