【问题标题】:VoiceOver controls are selectable when hidden隐藏时可选择 VoiceOver 控件
【发布时间】:2016-02-19 18:21:18
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 我有完全相反的问题!如果我的覆盖视图(包含按钮)是透明的(alpha=0.0),则 VoiceOver 找不到它的任何子视图(按钮等)。我的情况是,即使覆盖层被隐藏,我也希望这些控件可以访问(通过 VoiceOver) - 但我不能!!!

标签: ios voiceover


【解决方案1】:

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

【讨论】:

  • 是的,这正是我所缺少的。非常感谢!顺便说一句,我在 Apple Development 论坛上问过同样的问题,但没有收到任何回复。我似乎总是在 stackoverflow 上找到更多知识渊博的人。
  • 我也尝试在那里回答问题,只是机会问题。顺便说一句,如果您需要 iOS 5,您可以拥有 VoiceOver 模式视图,这可以让生活变得很多更轻松。
  • 感谢您的提示。我确实看到了,但我希望能够支持 Gen 2/3 iPod,它似乎有 4.2 作为您可以安装的最高版本(我想我总是可以检查操作系统版本并制作或不制作 iOS 5个电话相应)。
  • 我在 iOS 5 上使用模态,在 4.x 上尽我所能。
  • 感谢大卫的这些提示!我假设设置布尔值应该确保 Voiceover 知道布局确实发生了变化。想知道为什么它不起作用(根据我的假设)
【解决方案2】:

“accessibilityElementsHidden”的文档说明:

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

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

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

【讨论】:

  • 感谢您的回复。我之前打错了,我把它设置为YES。问题似乎是我在删除窗口后没有调用 UIAccessibilityPostNotification。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多