如何为UIPickerView行设置Voice Over辅助功能标签?

时间:2015-06-11 20:38:22

标签: ios uipickerview voiceover

我正在尝试使用Voice Over UIPickerView,我注意到UIPickerViewAccessibilityDelegate协议相当不完整。它只允许您为pickerView组件指定标签和提示,而不是组件中的行。 (它还有一个错误,它的pickerView:accessibilityLabelForComponent:方法不会在它的pickerView参数中传递UIPickerView *,而是UIAccessibilityPickerComponent!)

所以我现在想知道,有没有办法为我的选择器的行设置自定义辅助功能标签,或者只能读出屏幕上显示的实际选择器行值?

我正在尝试做一个选择器视图,显示时间,小时,分钟,秒。我无法让datePicker执行此操作。但是,如果每一行都可以说“3小时”而不是3个,那就太好了。如果我必须将可见标签设置为我想要的声音,那么我不确定标签将适合展示这一点,即。

15小时35分20秒

在英文屏幕上非常适合,不确定它在本地化时会增长多少。因此,能够为每一行设置标签的理想选择。

干杯

1 个答案:

答案 0 :(得分:4)

如果要实现pickerView:viewForRow:forComponent:reusingView: UIPickerViewDelegate方法来填充UIPickerView组件,可以通过在{{1上设置accessibilityLabel来为每行实现自定义辅助功能标签你是从那个方法回来的。

请注意,在我使用UIView填充UIPickerView的情况下,我无法成功创建VoiceOver读取自定义辅助功能标签 - 甚至在返回的pickerView:titleForRow:forComponent:上设置accessibilityLabel (它在其他一些情况下工作,比如为UITableView索引设置辅助功能标签)并没有改变VoiceOver的发音。因此,如果您想要自定义VoiceOver(或Switch Control)为UIPickerView行说话的话,似乎唯一的方法就是使用NSString,而不是任何其他2个候选方法来填充UIPickerView行。< / p>

但是,我仍然建议您重新考虑一下您的工作是否可取。当VoiceOver(或Switch Control)用户到达组件时,例如pickerView:viewForRow:forComponent:reusingView:“分钟”,他们知道他们在几分钟内,因为VoiceOver会读取“分钟,19”,等调整价值时,他们不需要再听“20分钟”,“21分钟”; “20”和“21”就足够了,用户可以记住上下文(例如“现在我在分钟,所以让它调整到45”)。