【问题标题】:Controlling accessibility voice over readout of numbers in iOS在 iOS 中控制可访问性语音对数字的读出
【发布时间】:2020-05-03 05:47:08
【问题描述】:

我正在尝试在自定义 UIView 上获取一个带有十进制数字的 accessibilityValue,以读出“二十点一”,例如,类似于语音读出视频上的持续时间和关键帧值的方式在照片应用中编辑视频时使用修剪器。

默认设置将值读出为“二十点一”。如果我设置accessibilityAttributedLabel 而不是使用accessibilitySpeechPunctuation 键,它会读作“二十一期”。

view.accessibilityAttributedLabel = NSAttributedString(string: "20.1", attributes: [.accessibilitySpeechPunctuation: true])

如果不求助于手动构建一个数字字符串来读出,任何人都知道如何让数字读出“点”而不是“点”或“句点”?

【问题讨论】:

  • 在我看来,操作系统中没有什么可以帮助您。 ???达到目标的唯一方法是替换“。”通过您的可访问性中的“点”一词读出。 ???但是,除非您没有将应用国际化,否则您必须在执行此操作之前检查语言。
  • 这有点像我所期待的????我希望不必为了“点”而陷入翻译和本地化的兔子洞。似乎有点奇怪,没有更好的语音支持数值,如果是这样的话????????‍♂️
  • @XLE_22 例如,我偶然发现从ByteCountFormatter 生成的字符串读取为“20 点一兆字节”。与NumberFormatter 一起玩,看看我能不能让它在那里工作......

标签: ios numbers accessibility voiceover


【解决方案1】:

知道了!使用具有.spellOut 样式的NumberFormatter 格式化数字将生成具有完整拼写值的字符串。不是我们想要的标签文本,而是我们想要的无障碍标签。

let formatter = NumberFormatter()
formatter.numberStyle = .spellOut

let label = UILabel()
label.text = formatter.string(from: 20.1)
label.accessibilityLabel = formatter.string(from: 20.1)

// prints out "twenty point one"
print(label.accessibilityLabel)

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多