VoiceOver 是不是总是忽略宽度和高度为零的 iOS 视图?
Posted
技术标签:
【中文标题】VoiceOver 是不是总是忽略宽度和高度为零的 iOS 视图?【英文标题】:Does VoiceOver always ignore views with width and height zero iOS?VoiceOver 是否总是忽略宽度和高度为零的 iOS 视图? 【发布时间】:2020-03-13 19:23:48 【问题描述】:对于 Voice Over 忽略 UILabel 是否足以将其 text 属性设置为 nil 或者是否还需要将 isHidden 属性设置为 true ?
我在一个示例项目中对此进行了测试,发现当文本设置为 nil 时 Voice Over 会忽略标签。我可以一直指望这个吗?在这种情况下,标签的宽度和高度为零,因为我没有添加任何约束。那么我可以假设任何宽度和高度为零的视图都会被 Voice Over 忽略,而不管它是否隐藏?
【问题讨论】:
【参考方案1】:为了让 VoiceOver 忽略 [UILabel],是否将文本设置为 nil 就足够了,还是我也应该将 isHidden 属性设置为 true?
VoiceOver 忽略元素的适当方式是将其isAccessibilityElement
属性设置为false
?...您正在使用的元素 ⟹ UILabel
就足够了。
在这种情况下,将其文本设置为 nil 是可行的,但它更像是一个杂物,而不是一个正确的解决方案。
图形元素不应仅在 VoiceOver 运行时消失,因为您的界面应该对每个人都相同:例如,您可能有未受过教育的人可以在有或没有 VoiceOver 的情况下使用您的应用,他们如果他们在两种方式上都没有相同的视觉体验,可能会感到困惑。 ?
我在一个示例项目中对此进行了测试,发现当文本设置为 nil 时 Voice Over 会忽略标签。我可以一直依靠这个吗?
不,您不能,因为它适用于 UILabel
,但如果您尝试使用按钮或文本字段执行相同的操作,您会发现它不会工作肯定是因为他们的'accessibilityTraits`。
那么我可以假设任何宽度和高度为零的视图都会被 Voice Over 忽略,无论它是否隐藏?
是的,您可以,因为 width = height = zero 表示此元素不是 VoiceOver 应该分析和读出的图形元素。 但是,即使它有效,我不建议按照此路径将元素隐藏到 VoiceOver,正如我之前解释的那样。 ?
【讨论】:
我刚刚意识到我对问题的一部分措辞有误。我为此道歉。我不是为了画外音而让 UI 元素消失。将在可重用组件中使用的标签图像化,任何使用它的人都可以随时将文本设置为他们想要的任何内容。我只是想确保当文本设置为 nil 时 Voice Over 会忽略标签。因此,您建议的一种方法是将isAccessibilityElement
设置为false。将 isHidden
设置为 true 是否也适用于所有情况?
@AnirudhBandi:据我所知,ìsHidden
的属性也达到了这个目标。 ?以上是关于VoiceOver 是不是总是忽略宽度和高度为零的 iOS 视图?的主要内容,如果未能解决你的问题,请参考以下文章
Android中RelativeLayout中的视图宽度和高度始终为零