如何在运行仅限iPhone的应用程序(非通用)的iPad上支持UIPickerView中的VoiceOver?

时间:2014-01-08 19:46:57

标签: ios accessibility uipickerview voiceover uiaccessibility

通常我会查看Apple的UICatalog示例代码以获得基本的VoiceOver支持,但在示例代码中看起来似乎有对UIPickerViews的VoiceOver支持。我是否需要在某处提供accessibilityLabel方法来添加VoiceOver支持?我试图实施UIPickerViewAccessibilityDelegate方法,但配音仅读取我的选择器视图中的标签,而不是提示向上或向下滑动以更改值。

此外,我的选择器视图设置为UITextField的输入视图。所以我不确定这是否相关。

更新: https://github.com/stevemoser/VoiceOverPicker

我创建了一个展示问题的示例项目。在该示例中,显示了正常的选择器视图和文本字段。还有一个选择器设置为textfield的输入视图属性。我似乎无法通过在使用VoiceOver时点击它来激活任一选择器。虽然我可以通过屏幕上的视图滑动(左和右)来激活任何一个。有什么想法吗?

更新2: 看起来如果该应用程序是在iPhone上运行的iPhone应用程序或在iPad上运行的iPad应用程序,它运行正常但如果它是在iPad上运行的仅iPhone应用程序,则点击选择UIPickerView不起作用。

2 个答案:

答案 0 :(得分:2)

您是否正在使用每行标题(而非自定义视图)进行香草UIPickerView?如果是这样,你就不应该做任何事情。

您提到VoiceOver正在读取每行上的标签,因此我们知道UIPickerView正确地将isAccessibilityElement设置为YES。它也正确地读取accessibilityLabels。

您是否有可能在有机会阅读accessibilityHint之前与选择器进行交互? (为了其他人的利益,accessibilityHint是“用一根手指轻扫或向下调整值”史蒂夫在他的问题中提到的。)或者也许某些通知正在改变VoiceOver焦点,然后提示才有可能被阅读?

答案 1 :(得分:1)

默认情况下,如果您的选择器视图可以访问,当您使用VoiceOver专注于它时,它将按以下方式阅读:

  

“[ROW LABEL]可调节[#number]超出[#total]选取器项目”a 2 to   3秒暂停然后“向上或向下滑动以选择值”

需要注意的一些事项:

  1. 读取标签和提示之间有2到3秒的延迟,请确保等待。
  2. 如果您提供自己的提示,默认的提示将无法读取我相信
  3. 只有当您通过直接按或通过向右或向左滑动控件来达到某个控件时,才会读取提示。如果你用两根手指向下或向上滑动, 就会被读取。
  4. 确保您在实际设备而不是模拟器上进行测试,因为它没有显示VoiceOver宣布的所有内容。