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

一般来说,我会看Apple的UICatalog示例代码,以获取基本的VoiceOver支持,但是看起来在示例代码中,UIPickerViews支持VoiceOver。 我是否需要在某处提供accessibilityLabel方法以添加VoiceOver支持? 我试图实现UIPickerViewAccessibilityDelegate方法,但语音只读取我的select器视图中的标签,而不是向上或向下滑动以更改值的提示。

另外我的select器视图设置为UITextField的input视图。 所以我不确定这是否相关。

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

我创build了一个示例项目来演示这个问题。 在这个例子中,显示了一个正常的select器视图和一个文本框。 还有一个select器被设置为文本框的input视图属性。 在使用VoiceOver的时候,我似乎无法启用任何一个select器。 虽然我可以通过在屏幕上浏览视图(左右)来激活任何一个。 有任何想法吗?

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

你只是做一个香草UIPickerView使用标题为每一行(而不是自定义视图)? 如果是这样,那你就不需要做任何事情。

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

有没有机会阅读accessibilityHint之前,您是否可以与选取器进行交互? (为了他人的利益,可访问性提示是Steve在他的问题中提到的“用一根手指来调整价值”)或者也许有些通知在提示有机会阅读之前改变了VoiceOver焦点?

默认情况下,如果您的select器视图是可访问的,当您使用VoiceOver关注它时,它将读取以下内容:

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

几件事要注意:

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