如何让 Voiceover 拼出单词中的每个字母?

How to make Voiceover to spell each letter in a word?

我有一段文字 CPN34THX 应该通过画外音朗读为 C N 3 4 T H X 有没有把属性设置成UIAccessibility,这样就可以一个字一个字的读了?

根据需要单独设置accessibilityLabel

let code = "CPN34THX"
let accessibleCode = code.map { String([=10=]) + " " }.joined() // output: "C P N 3 4 T H X"
myLabel.text = code
myLabel.accessibilityLabel = accessibleCode

为了让它更容易发音,制作一个像这样的字符串:

myLabel.accessibilityLabel = "C^. P^. N^. 3. 4. T^. H^. X^."

您可以尝试使用 NSAttributedString.Key.accessibilitySpeechSpellOutVoiceOver 单独阅读每个字母。

来自UIAccessibilityConstants.h

// Use an NSNumber with a YES or NO value to specify whether each letter in the string should be spoken separately.
    @available(iOS 13.0, *)
    public static let accessibilitySpeechSpellOut: NSAttributedString.Key

请注意,此功能仅适用于 iOS 13 及更高版本。

一个例子:

let string = "CPN34THX"
let attributedLabel = NSMutableAttributedString(string: string,
                                                attributes:[.accessibilitySpeechSpellOut: true])
yourAccessibleView.accessibilityAttributedLabel =  attributedLabel