【问题标题】:Accessibility: focus on a view可访问性:专注于视图
【发布时间】:2019-11-04 20:41:08
【问题描述】:

在我的应用程序中(盲人用户必须可以访问)我有这种情况(这是一个语法练习)

当我在打开 VoiceOver 的设备上尝试它时,首先它会关注句子的第一部分,所以在这种情况下,它会显示“Kesha”,当我向右滑动阅读下一部分时,它会显示句子的第二部分句子“合同因为……”。我想要的是让它在阅读句子的第二部分之前也关注灰色框(即UIViewelement),以便用户知道该空框在句子中的位置,但我不知道不知道该怎么做。

我已经尝试过grayBox.accessibilityLabel = "empty box"grayBox.accessibilityHint = "empty box",但它只是没有将焦点放在那个视图上而且它不会说话。我还尝试在盒子里放一个空的UILabel,但我在以正确的顺序定位它时遇到了一些问题,我认为这不是正确的做法。有什么建议吗?

【问题讨论】:

标签: ios swift view focus accessibility


【解决方案1】:

在您想要“接收焦点”的UIView 上,您只需启用可访问性或将其标记为可访问元素,例如:

myGreyView.isAccessibilityElement = true
myGreyView.accessibilityLabel = "A grey box"
myGreyView.accessibilityHint = "this is a secretive box. I don't know what it does"

您还可以在 xcode 界面生成器“启用辅助功能”中的 UIView 属性中勾选一个框,我认为它被调用了。这还可以让您设置标签和提示。

欲了解更多信息,请参阅Apple guide to VoiceOver

【讨论】:

  • 在这里我想念什么谢谢,关于如何设置“焦点”的正确顺序有什么想法吗?因为现在阅读的第一件事就是那个空盒子,而不是句子的第一部分
  • 对不起,我不确定如何设置订单,可能需要阅读该指南
【解决方案2】:

关于被读出的元素的顺序。第一部分和第二部分是不同的 UILabel 还是一个标签?

您是在代码中还是在 Xib/Storyboard 中添加这些?根据添加为子视图的顺序,可以影响 VoiceOver 读出项目的顺序。

添加 3x UI 元素时,请按以下顺序添加它们。

  1. UILabel - “Kesha”
  2. UIView - 灰盒,“灰盒”
  3. UILabel - “合同不公平。”

如果您已通过界面构建​​器(Xib/Storyboard)添加它们,请确保视图层次结构中的顺序正确。

如果失败,您可以尝试覆盖方法“accessibilityElements”并按照您希望它们读出的顺序返回标签和灰色视图的数组。

【讨论】:

  • 我以编程方式添加它们,我添加子视图的顺序似乎不会影响它们被读取的顺序。我的应用程序的另一部分也有同样的问题,我在其中显示了一个包含 2 个标签和一个按钮的弹出视图。通过命令 'UIAccessibility.post(notification: UIAccessibility.Notification.screenChanged, argument: self.popupLabel)' 我可以将焦点设置在弹出视图的第一个标签上,但不是使用可访问性手势(滑动)应该读取下一个标签,然后是按钮,它会读取背景上的元素
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2015-10-30
相关资源
最近更新 更多