UIDatepicker VoiceOver 错误的 accessibilityLabel
UIDatepicker VoiceOver wrong accessibilityLabel
我正在实施 VoiceOver,我在 iOS 13.x 上遇到关于日期选择器值的文本读取问题。日期选择器区域设置更改后,可访问性字符串似乎没有更改。
几个月的列有美国日的字符串,
选择四月后它说 fünf von dreissig (5 from 30),它应该说 4 from 12.
在我设置的日期选择器上
datePicker.locale = Locale.init(identifier: "de_DE")
和 datePicker.calendar = Calendar.init(identifier: Calendar.Identifier.gregorian)
。我也尝试设置 datePicker.accessibilityLanguage = "de-DE"
.
有什么想法吗?
Any ideas?
无法 修改 UIDatePicker
内的语言环境以用于 VoiceOver。
将考虑的语言是设备设置中的 selected 语言。
解释
UIDatePicker
元素是一个包含许多其他元素的包装器,VoiceOver 用户可以与之交互 (在您的情况下为年、月和日).
事实上,UIDatePicker
本身不可访问,因为视图及其子视图 can't be both accessible alltogether.
写datePicker.accessibilityLanguage = "de-DE"
是正确的,因为UIControl符合UIAccessibility informal protocol,但是VoiceOver不会分析它(这里不能访问父视图).
定义日期的视图是唯一可以被 VoiceOver 访问和解释为 adjustable
元素的视图,但不幸的是,它们无法在开发中实现。
UIDatePicker
是一种黑匣子,它允许很少的操作,但会阻止访问其子视图,例如……这可能是这里的一个很好的调查线索。
解决方案
在您的用例中,UIDatePicker
无法自定义任何内容,但是为了使用 VoiceOver 实现您的目标,我建议使用 Apple website:
中建议的 UIPickerView
If you want to handle the selection of arbitrary items from a list, use a UIPickerView object.
- 创建一个
UIPickerView
具有不同轮子的对象。
- 用
adjustable
特征定义它们中的每一个,以允许 VoiceOver 用户 select 列表中的一个元素。
- Return a
NSAttributedString
为了 add an attribute 将指定语言或像您一样使用 accessibilityLanguage
,两者都应该是有效的。
与交钥匙 UIDatePicker
对象相比需要做很多工作,但我认为您可以通过 在日期选择器中调整 VoiceOver 的语言来实现您的目的遵循这个道理。
我正在实施 VoiceOver,我在 iOS 13.x 上遇到关于日期选择器值的文本读取问题。日期选择器区域设置更改后,可访问性字符串似乎没有更改。 几个月的列有美国日的字符串, 选择四月后它说 fünf von dreissig (5 from 30),它应该说 4 from 12.
在我设置的日期选择器上
datePicker.locale = Locale.init(identifier: "de_DE")
和 datePicker.calendar = Calendar.init(identifier: Calendar.Identifier.gregorian)
。我也尝试设置 datePicker.accessibilityLanguage = "de-DE"
.
有什么想法吗?
Any ideas?
无法 修改 UIDatePicker
内的语言环境以用于 VoiceOver。
将考虑的语言是设备设置中的 selected 语言。
解释
UIDatePicker
元素是一个包含许多其他元素的包装器,VoiceOver 用户可以与之交互 (在您的情况下为年、月和日).
事实上,UIDatePicker
本身不可访问,因为视图及其子视图 can't be both accessible alltogether.
写datePicker.accessibilityLanguage = "de-DE"
是正确的,因为UIControl符合UIAccessibility informal protocol,但是VoiceOver不会分析它(这里不能访问父视图).
定义日期的视图是唯一可以被 VoiceOver 访问和解释为 adjustable
元素的视图,但不幸的是,它们无法在开发中实现。
UIDatePicker
是一种黑匣子,它允许很少的操作,但会阻止访问其子视图,例如……这可能是这里的一个很好的调查线索。
解决方案
在您的用例中,UIDatePicker
无法自定义任何内容,但是为了使用 VoiceOver 实现您的目标,我建议使用 Apple website:
UIPickerView
If you want to handle the selection of arbitrary items from a list, use a UIPickerView object.
- 创建一个
UIPickerView
具有不同轮子的对象。 - 用
adjustable
特征定义它们中的每一个,以允许 VoiceOver 用户 select 列表中的一个元素。 - Return a
NSAttributedString
为了 add an attribute 将指定语言或像您一样使用accessibilityLanguage
,两者都应该是有效的。
与交钥匙 UIDatePicker
对象相比需要做很多工作,但我认为您可以通过 在日期选择器中调整 VoiceOver 的语言来实现您的目的遵循这个道理。