首页 文章

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

提问于
浏览
7

一般来说,我会查看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 回答

  • 1

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

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

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

  • 2

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

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

    一些注意事项:

    • 读取标签和提示之间有2到3秒的延迟,请确保等待 .

    • 如果您提供自己的提示,我相信默认的提示将无法读取

    • 仅当您通过直接按下或向右或向左滑动控件来达到某个控件时,才会读取提示 . 如果你用2个手指向下或向上滑动,它将被 not 读取 .

    • 确保您在实际设备而不是模拟器上进行测试,因为它没有显示VoiceOver宣布的所有内容 .

相关问题