You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SwiftUI的accessibilityLabel中为VoiceOver添加换行或停顿?

SwiftUI无障碍标签实现VoiceOver停顿/换行的可靠方法

关于\n的可用性

VoiceOver支持用\n在accessibilityLabel中产生停顿效果,尽管无障碍检查器会显示带\n的原始字符串,但实际朗读时,VoiceOver会在换行符位置插入明显停顿,实现类似分段的朗读效果。这是开发中广泛使用的方案,适配绝大多数地区的VoiceOver语音包。

更精准的停顿控制方案

如果需要自定义停顿时长,或者追求更规范的语义拆分,可以使用accessibilityAttributedLabel配合属性字符串:

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
            .accessibilityAttributedLabel(makeAttributedAccessibilityLabel())
    }
    
    private func makeAttributedAccessibilityLabel() -> NSAttributedString {
        let attributedString = NSMutableAttributedString(string: "Greeting")
        // 添加自定义时长的停顿(单位:秒)
        attributedString.append(NSAttributedString(string: "Hello, world!", attributes: [
            .accessibilitySpeechPause: 0.5
        ]))
        return attributedString
    }
}

通过UIAccessibilitySpeechAttributePause属性,你可以精确控制两部分内容之间的停顿长度,比\n的固定停顿更灵活。

补充说明

苹果官方无障碍文档中虽未单独标注\n的用法,但这是经过验证的有效方案;而属性字符串的方式则是官方推荐的精细化无障碍控制手段,适合对朗读体验有更高要求的场景。

内容的提问来源于stack exchange,提问作者Yunus Tür

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:42:38