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

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

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

我试图做一个select器视图,显示时间,小时,分钟,秒。 我无法得到datePicker来做到这一点。 但是,如果每一行都可以用“3小时”而不是3来表示,那么它会很好。如果必须将可见标签设置为我想要的声音来读出,那么我不确定标签将适合显示这个,即。

15小时35分20秒

在英文屏幕上显示的内容相当多,不知道在本地化时它有多大,因此能够为每一行设置标签。

干杯

如果您正在实施UIPickerViewDelegatepickerView:viewForRow:forComponent:reusingView:方法来填充UIPickerView组件,则可以通过在您从该方法返回的UIView上设置accessibilityLabel来实现每行的自定义辅助function标签。

请注意,在使用pickerView:titleForRow:forComponent:填充UIPickerView情况下,我并没有成功使VoiceOver读取自定义辅助function标签pickerView:titleForRow:forComponent: – 甚至在返回的NSString上设置了accessibilityLabel (它在其他上下文中工作,例如设置辅助function标签UITableView索引)不会改变VoiceOver的发音。 所以如果你想自定义VoiceOver(或者Switch Control)为UIPickerView行所说的话,似乎唯一的方法是使用pickerView:viewForRow:forComponent:reusingView:而不是其他2个候选方法中的任何一个来填充UIPickerView行。

不过,我仍然build议你重新考虑你所做的事是否可取。 当VoiceOver(或Switch Control)用户到达组件时,例如使用accessibilityLabel “Minutes”,他们知道他们在几分钟内,因为VoiceOver读取例如“Minutes,19”,所以当调整值时,他们不需要再听一遍“20分钟”,“21分钟”; “20”和“21”已经足够了,用户可以记住上下文(例如“现在我在几分钟内,所以我们把它调整到45”)。