在阅读title / accessibilityLabel后,有没有办法强制VoiceOver不读取视图控制器 Headers “ Headers ”字?
目前,该行为是默认的 . 如果我将 Headers 设置为“我的面板”,则语音将会读取如下内容:
“我的小组”......“ Headers ”
我相信这是在一些UI元素上设置的可访问性特征UIAccessibilityTraitHeader的结果,但我不知道哪个元素具有这个特征 . 我的视图控制器嵌套在导航控制器中 . 请不要问为什么我需要删除这个单词 . 这是要求,我需要摆脱它 .
2 回答
大卫的评论是正确的答案 . 您应该在语义上使用
UIElement
类 . 换句话说,如果文本"My Panel"不是视图的 Headers ,那么它在语义上是什么?获得该问题的答案后,您可以重新设计视图以使用该类型的元素,并进行适当的样式设置 .但是,根据您提供的所有信息,它似乎在语义上是一个 Headers ,因此屏幕阅读器正在做适当的事情 .
谁给你这个要求可能不知道他们在说什么 . 这种类型的要求通常来自对可访问的UI / UX设计不熟悉的人 .
您可以自定义此 Headers 视图,并在自定义视图中实现
accessibilityElementDidBecomeFocused
方法,此视图确实变为焦点并将UIAccessibilityLayoutChangedNotification
发布到VoiceOver
并将焦点置于其自身,然后返回特征UIAccessibilityTraitNone