iOS UIKit中使用VoiceOver告知用户链接将跳转至App外的方法问询
iOS UIKit中VoiceOver跳转外部场景的无障碍处理方案
一、提前告知的核心要求
根据Apple无障碍指南,必须在用户激活链接之前就让其知晓操作会跳转到App外部,不能依赖跳转后的系统播报(比如浏览器的“webview”、电话的“phone”)——这类播报是跳转后的场景反馈,不符合“提前告知后果”的要求。
二、官方推荐的处理方式
Apple官方没有统一的固定话术,但明确要求通过accessibilityHint补充跳转说明,且文本必须做本地化适配:
- 跳转到设备设置:设置本地化提示文本
"此操作将跳转到系统设置" - 跳转到App Store:设置
"此操作将跳转到App Store" - 跳转到邮件/浏览器/Deep Link:对应设置
"此操作将跳转到邮件应用"、"此操作将跳转到浏览器"、"此操作将跳转到[目标App名称]"
Outlet中控件的代码示例
如果是通过Outlet关联的控件(如UIButton、可点击UILabel),直接在代码中设置accessibilityHint:
// 示例:跳转到App Store的按钮 appStoreButton.accessibilityHint = NSLocalizedString("此操作将跳转到App Store", comment: "Accessibility hint for App Store link")
三、UIAccessibility.screenChanged通知的作用
这个通知是跳转完成后用来告知VoiceOver当前屏幕内容已变更,帮助其聚焦到新场景的核心元素,不属于“提前告知”的前置操作。只有当跳转后的页面需要VoiceOver快速定位关键内容时才需要调用,不是必选项。
四、系统自动播报的局限性
VoiceOver跳转后播报的“webview”“phone”等内容,只是对新场景的类型说明,无法替代操作前的提示——用户需要在决定点击前就明确知道会离开当前App,而不是点击后才得知结果。
内容的提问来源于stack exchange,提问作者AppleDeveloper
相关产品推荐
相关产品推荐

