如何使用适当的可访问性修饰符覆盖 SwiftUI Picker
Posted
技术标签:
【中文标题】如何使用适当的可访问性修饰符覆盖 SwiftUI Picker【英文标题】:How to cover SwiftUI Picker with a proper accessibility modifiers 【发布时间】:2020-05-15 02:59:40 【问题描述】:我有一个 SwiftUI 选择器:
Picker(selection: self.$selectedIndex, label: Text(""))
Text("△").font(.system(size: 20)).tag(0)
Text("□").font(.system(size: 20)).tag(1)
Text("○").font(.system(size: 20)).tag(2)
.pickerStyle(SegmentedPickerStyle())
想让 VoiceOver 可以访问它。尝试执行以下操作:
Picker(selection: self.$selectedIndex, label: Text(""))
Text("△").font(.system(size: 20)).tag(0).accessibility(label: Text("Triangle label"))
Text("□").font(.system(size: 20)).tag(1).accessibility(label: Text("Square label"))
Text("○").font(.system(size: 20)).tag(2).accessibility(label: Text("Circle label"))
.pickerStyle(SegmentedPickerStyle())
辅助功能检查器显示 label="△" 但我希望它应该显示 label="Triangle label"。
请帮助找出正确的解决方案。
【问题讨论】:
【参考方案1】:我有一个类似的问题,我将它作为 FB8806682 提交给 Apple。我注意到两个有趣的因素,至少在 ios 14 上是这样。
这仅在使用 SegmentedPickerStyle()
时发生。默认选择器将正确读取提供的标签。
如果您激活屏幕上的任何控件(包括选择器本身!),那么分段选择器将开始读取正确的标签。
作为反馈助手条目的一部分,我创建了一个示例应用程序,它显示了两个选择器并演示了它们的区别。也可以使用on GitHub。
【讨论】:
干得好!看起来这个问题确实是一个需要由 Apple 修复的错误。以上是关于如何使用适当的可访问性修饰符覆盖 SwiftUI Picker的主要内容,如果未能解决你的问题,请参考以下文章