隐藏时可选择VoiceOver控件

Joh*_*aby 6 ios voiceover

我有一个包含一些控件的UIView(例如按钮,标签等).我将此视图覆盖到另一个视图(使用addSubview).如果用户启用了VoiceOver,则可以向左和向右滑动以选择控件.但是,如果我隐藏视图以使控件不再可见,则用户仍然可以滑动并选择它们(尽管它们实际上不起作用).由于这对盲人用户来说非常困惑,我想保持这种情况不会发生.我甚至尝试删除包含控件的视图(使用removeFromSuperview)但是用户仍然可以滑动以选择它们(尽管突出显示它们的小框不再位于正确的位置).就像VoiceOver已经记住那些控件曾经存在并且会永远记得那些.

我还找到了属性'accessibilityElementsHidden',我已经尝试在包含隐藏的控件的视图上将其设置为YES,但这似乎也不起作用.

这是VoiceOver中的错误,还是我错过了什么?有解决方法吗?

谢谢.

Dav*_*ham 10

"记忆"部分让我觉得你UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)在删除子视图后没有做过类似事情.

  • 是的,这正是我所缺少的.非常感谢你!顺便提一句,我在Apple开发论坛上提出了同样的问题并没有收到回复.我似乎总是在stackoverflow上找到更多知识渊博的人. (2认同)

nic*_*ona 8

"accessibilityElementsHidden"的文档说明:

一个布尔值,指示是否隐藏此辅助功能元素中包含的辅助功能元素......此属性的默认值为NO.您可以使用此属性隐藏新视图到达所涵盖的视图.在这种情况下,隐藏视图可能仍然在屏幕上可见,但它们不是用户操作的焦点.

您也可以使用此属性隐藏VoiceOver用户无需注意的瞬态视图.例如,VoiceOver不需要描述用户调整设备音量时出现的半透明视图,因为此操作的听觉反馈已足够.

因此,基于此,为了让VoiceOver忽略这些子视图,您实际上希望在父视图上将其设置为"YES".