7

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

我还找到了属性“accessibilityElementsHidden”,我尝试在包含控件的视图上将其设置为“是”,但它似乎也不起作用。

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

谢谢。

4

2 回答 2

12

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

于 2012-01-13T04:57:55.483 回答
8

“accessibilityElementsHidden”的文档指出:

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

您还可以使用此属性来隐藏 VoiceOver 用户不需要注意的瞬态视图。例如,VoiceOver 不需要描述用户在设备上调整音量时出现的半透明视图,因为这个动作的听觉反馈就足够了。

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

于 2012-01-13T04:54:11.277 回答