用途:在 iOS 开发任务中实现无障碍支持,基于 Swift、UIKit 与 SwiftUI。
主要能力与做法:
- 语义优先:使用标准控件,自带无障碍支持;为交互元素与有意义的图片设置 accessibilityLabel。
- 角色与状态:用 traits 表达元素类型与状态,如 .button、.link、.header、.selected、.notEnabled 等。
- 读值:用 accessibilityValue 描述滑块、步进器、开关、进度等的当前状态。
- 隐藏装饰元素:用 accessibilityHidden(true) 或 isAccessibilityElement = false。
- 分组与顺序:.combine 合并为一个朗读项,.contain 保留子元素可聚焦;用 accessibilitySortPriority 或 accessibilityElements 自定义焦点顺序。
- 焦点管理:用 AccessibilityFocusState、UIAccessibility.post 的 .screenChanged、.layoutChanged、.announcement 处理弹窗、状态变化与键盘收起后的焦点。
- 自定义操作:用 accessibilityAction(named:) 或 UIAccessibilityCustomAction 暴露删除、分享、排序等操作。
- 视觉适配:动态字体用 .font(.headline) 或 UIFont.preferredFont,避免硬编码字号;用 accessibilityReduceMotion 判断是否播放动画。
- 输入无障碍:表单字段需同时有可见标签与 accessibilityLabel,不用占位符代替;必要时用 accessibilityInputLabels 提供语音控制可读名称。
- 错误处理:显示错误并用 announcement 播报。
- 屏幕结构:设置屏幕标题与段落标题特征。
运行时检测:UIAccessibility.isVoiceOverRunning、isSwitchControlRunning、isReduceMotionEnabled 等。
测试:手动用 VoiceOver 与 Accessibility Inspector;自动化用 iOS 17+ 的 performAccessibilityAudit(),并补充断言检查重复标签、冗余角色词与标题特征。
限制:未提供具体收费、价格、平台或效果数据;引用文件 accessibility-apis.md、visual-adaptations.md、assistive-features.md、input-patterns.md 的细节暂未提供。