我有一个UIView,其中包含一些控件(例如按钮,标签等)。我将此视图覆盖到另一个视图(使用addSubview)。如果用户启用了VoiceOver,则可以向左和向右滑动以选择控件。但是,如果我隐藏视图以使控件不再可见,则用户仍然可以滑动并选择它们(尽管它们实际上不起作用)。由于这对盲人用户来说非常困惑,我想保持这种情况不会发生。我甚至尝试删除包含控件的视图(使用removeFromSuperview)但是用户仍然可以滑动以选择它们(尽管突出显示它们的小框不再位于正确的位置)。就像VoiceOver已经记住那些控件曾经存在并且会永远记住这些控件。
我还找到了属性'accessibilityElementsHidden',并且我已经尝试将视图设置为YES,该视图包含隐藏的控件,但这似乎也不起作用。
这是VoiceOver中的错误,还是我错过了什么?有解决方法吗?
感谢。
答案 0 :(得分:10)
“记忆”部分让我觉得在删除子视图后你没有做UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)
之类的事情。
答案 1 :(得分:8)
“accessibilityElementsHidden”的文档说明:
一个布尔值,指示是否可访问性元素 隐藏此辅助功能元素中包含的内容。 ..... 此属性的默认值为NO。您可以使用此属性 隐藏新视图到达所涵盖的视图。在这 例如,隐藏的视图可能仍然在屏幕上可见,但它们不是 用户行动的重点。
您也可以使用此属性隐藏瞬态视图 VoiceOver用户无需注意。例如,VoiceOver没有 需要描述用户调整时出现的半透明视图 他们设备上的音量,因为这个动作的听觉反馈 已经足够了。
因此,基于此,为了让VoiceOver忽略这些子视图,您实际上希望在父视图上将其设置为“YES”。