我遇到无障碍VoiceOver无效的情况。
我的customView包含UIImage
(imageSample)和UILabel
(labelSample)
同样的CustomView
用于应用内的两个不同屏幕。
屏幕1 - 这有效!
查看 - > MainScrollView
- > MainStackView
- > OptionAStackView
- > CustomView
屏幕2 - 这不起作用!
查看 - > MainScrollView
- > MainStackView
- > ContainerView
- > StackView
- > StackView
- > OptionBStackView
- > CustomView
标签的voiceOver在屏幕1上运行,但在屏幕2上失败。有没有人知道为什么VoiceOver会在屏幕2上失败?具有多个堆栈视图的布局是否会影响VoiceOver?画外音在处理多个堆栈视图时有问题。
注意:为UI标签启用了辅助功能。并且在层次结构中禁用此标签上方的视图。
答案 0 :(得分:1)
使用大量分层的对象时,辅助功能非常糟糕。如果您MainScrollView
的多个子视图将.isAccessibilityElement
设置为true
,则customView
下方的视图可能是正在被选中的视图。要检查是否是这种情况,您可以点击第二个屏幕将焦点放在屏幕上,然后向右滑动以继续将焦点移动到视图层次结构中。如果您设法最终到达第二个屏幕上的contentView
,那么您就知道焦点最初会落在与您想要的不同的图层上。
我的猜测是ContainerView
是焦点的初始着陆位置。如果您设置ContainerView.isAccessibilityElement = false
,则可以解决您的问题。