我正在尝试实现我的ios项目的可访问性。
当画外音打开时,有没有办法纠正某些特定单词的发音?例如,“speech”的正确发音是spiːtʃ,但我希望画外音在我的整个项目中将所有单词“speech”读成“speech”和“spi”spiːk一样。
我知道有一种方法可以将我想要更改发音的任何UIElements的可访问性标签设置为“说”。但是,有些元素是动态的。例如,我们从后端获得标签文本,但我们永远不会知道标签文本何时会是“speech”。如果我从后端得到“speech”一词,我希望听到画外音将其读为“back”。
因此,我想更改画外音的设置。每次,如果单词是“speech”,画外音就会读作“speech”。
我能做到吗?
发布于 2021-02-17 08:12:24
简短的回答。
是的,你能做到,但请不要。
长长的答案
我能做到吗?
是的,你当然可以。
只需从后端获取数据,并使用要替换的单词字典对字符串进行查找替换,然后添加新版本的字符串作为可访问性标签。
你应该这么做吗?
绝对不是。
每次有人试图“修正”发音,结果都会让事情变得更糟。
我甚至不明白为什么你想让屏幕阅读器用户在任何其他人看到“speech”的时候听到"speech",这是没有意义的,很可能会破坏句子的意思:
“我昨天晚上参加了的演讲,内容非常丰富。”
将转化为:
我参加了昨晚的speak演讲,内容非常丰富。
屏幕阅读器用户已经习惯了它。
屏幕阅读器用户习惯于听到不同的说法(而且是不正确的!),我猜你使用屏幕阅读器的时间还不够长,无法适应屏幕阅读器语音的特性。
你非但不能帮助屏幕阅读器用户,反而会让事情变得更糟。
我只覆盖过两次屏幕阅读器的默认行为,一次是将其作为日期读取的版本号,另一次是密码管理器读取密码并尝试以文字形式读取内容。
除了那些非常狭义的示例之外,我还没有发现要为屏幕阅读器做任何改变的理由。
盲文用户呢?
你可以改变一些事情,因为它们听起来不太对劲。但盲文用户也使用屏幕阅读器,为他们更改内容可能会非常令人困惑(根据上面的“语音”示例)。
那么最佳实践呢?
“为辅助技术用户提供与非辅助技术用户尽可能相似的体验”。这是可访问性的头号指导原则,当你改变发音和单词时,你可能会改变句子的意思,从而提供不同的体验。
总结
无论如何,这变成了一场不是故意的咆哮(我很抱歉,我只是试图让你明白这一点,因为我经常回答类似的问题!),希望你能明白,不要管它,呈现同样的信息,我甚至没有讨论过不同的语音合成器,语言翻译等使用“不自然”语言可能会干扰的东西。
发布于 2021-02-17 07:35:47
最简单的解决方案是从后端返回第二个仅用于accessibilityLabel的字符串。
如果您需要更多的控制,您可以将AttributedString作为accessibilityLabel传递,其中包含许多用于控制发音的不同选项
https://medium.com/macoclock/ios-attributed-accessibility-labels-f54b8dcbf9fa
https://stackoverflow.com/questions/66232056
复制相似问题