SwiftUI按钮点击后如何设置不同的VoiceOver无障碍文本?
SwiftUI按钮点击后自定义VoiceOver播报文本
场景1:仅点击时播报新内容(后续聚焦仍保留初始文本)
直接在按钮的点击动作中调用系统无障碍播报方法,点击后VoiceOver会单独播报指定内容,不会包含按钮的初始无障碍标签。
代码示例:
@State private var count = 0 Button { count += 1 // 点击后触发自定义播报 UIAccessibility.post(notification: .announcement, argument: "Count is \(count)") } label: { Text("Increment") } .accessibilityLabel("点击此处增加计数")
场景2:点击后永久修改按钮的VoiceOver播报文本(后续聚焦也显示新内容)
通过状态变量动态绑定accessibilityLabel,点击按钮时更新状态值,按钮的无障碍标签会同步切换,后续聚焦或点击时都会播报新内容,不会包含初始文本。
代码示例:
@State private var count = 0 @State private var accessibilityText = "点击此处增加计数" Button { count += 1 accessibilityText = "Count is \(count)" } label: { Text("Increment") } .accessibilityLabel(accessibilityText)
说明:
- 场景1适合仅需要在点击瞬间反馈操作结果,按钮本身的功能描述仍保留初始文本的场景。
- 场景2适合按钮关联的状态发生变化,需要后续聚焦时也展示当前状态的场景。
内容的提问来源于stack exchange,提问作者RJ168
相关产品推荐
相关产品推荐

