一般来说,我会查看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 回答
您是否正在使用每行 Headers (而不是自定义视图)进行香草UIPickerView?如果是这样,那么你不应该做任何事情 .
您提到VoiceOver正在读取每行上的标签,因此我们知道UIPickerView正确地将isAccessibilityElement设置为YES . 它也正确地读取accessibilityLabels .
您是否有可能在有机会阅读accessibilityHint之前与选择器进行交互? (为了其他人的利益,accessibilityHint是“用一根手指轻扫或向下调整值”,史蒂夫在他的问题中提到过 . )或者在提示有机会被读取之前,或许某些通知正在改变VoiceOver焦点?
默认情况下,如果您的选择器视图可以访问,当您使用VoiceOver关注它时,它将按以下方式读取内容:
一些注意事项:
读取标签和提示之间有2到3秒的延迟,请确保等待 .
如果您提供自己的提示,我相信默认的提示将无法读取
仅当您通过直接按下或向右或向左滑动控件来达到某个控件时,才会读取提示 . 如果你用2个手指向下或向上滑动,它将被 not 读取 .
确保您在实际设备而不是模拟器上进行测试,因为它没有显示VoiceOver宣布的所有内容 .