移动开发中的无障碍:定义、标准和实现方法

作者: IT Sectr 发布日期: 2026-05-10 阅读时间: 8 分钟

Accessibility(a11y)是一种创建可供残障人士使用的应用的实践。根据世界卫生组织的数据,超过13亿人(占人口的16%)患有某种形式的残疾。世卫组织(2024年报告)强调,数字无障碍正变得至关重要。让我们来看看如何在 iOS 和 Android 上确保无障碍,以及存在哪些标准。

关键要点

  • 无障碍 — 确保视力、听力、运动和认知障碍人士能够访问应用。
  • iOS:VoiceOver(屏幕阅读器)、Accessibility Label、Accessibility Trait、Dynamic Type、Reduce Motion。
  • Android:TalkBack(屏幕阅读器)、Content Description、Focus Order、Scale-independent Pixels(SP)。
  • WCAG(Web 内容无障碍指南)— 具有三个级别的国际标准:A、AA、AAA。移动应用适用 WCAG 2.2。
  • 无障碍测试:工具(Xcode Accessibility Inspector、Android Accessibility Scanner)、使用屏幕阅读器的手动测试、对比度检查。

什么是无障碍?

Accessibility(缩写 a11y — 字母 a + 11 个字母 + y)是产品可供残障人士使用的特性。在移动应用的上下文中,这意味着:支持屏幕阅读器(VoiceOver、TalkBack)、适当的文本大小、高对比度、正确的键盘导航焦点顺序,以及没有引起头晕的动画元素。

包容性不仅是道德义务,也是法律义务。许多国家都有数字无障碍法律:ADA(美国)、Section 508、European Accessibility Act(欧盟,从 2025 年起对应用强制要求)。根据 Business Disability Forum 的数据,投资于无障碍的公司可将其受众增加 15–20% 并降低法律风险。

在 IT Sectr,我们在开发的每个阶段都检查无障碍性。我们的经验表明:在设计阶段修复无障碍问题的成本比发布后低 10 倍。无障碍不是一个功能,而是现代应用的基本要求。

iOS:VoiceOver、Accessibility Label、Trait

Apple 生态系统提供了强大的无障碍工具。VoiceOver 是一个内置的屏幕阅读器,可以朗读屏幕上发生的一切。用户通过手势控制设备:向右滑动 — 下一个元素,向左滑动 — 上一个元素,双击 — 激活。

Accessibility Label 是 VoiceOver 为某个元素阅读的文本。默认情况下,iOS 使用按钮文本或标签,但对于图标和图形元素,您需要显式设置标签。Accessibility Trait 是描述元素类型的属性:button(按钮)、header(标题)、link(链接)、image(图像)。正确的 traits 有助于用户理解如何与元素交互。

VoiceOver 和 Accessibility Label

VoiceOver 支持 40 多种语言,适用于所有 Apple 设备。对于开发人员来说,最重要的是为每个界面元素设置正确的 accessibilityLabel 和 accessibilityTraits。如果某个元素不应被访问(装饰性图像),请设置 isAccessibilityElement = false。

swift
// Swift — 为按钮设置无障碍
let shareButton = UIButton()
shareButton.setImage(UIImage(named: "share-icon"), for: .normal)
shareButton.accessibilityLabel = "分享本文"
shareButton.accessibilityHint = "打开选择发送方式的对话框"
shareButton.accessibilityTraits = .button

// SwiftUI — 更简单
struct ShareButtonView: View {
    var body: some View {
        Button(action: share) {
            Image(systemName: "square.and.arrow.up")
        }
        .accessibilityLabel("分享")
        .accessibilityHint("打开分享菜单")
    }
}

代码显示了不带文本的按钮(仅图标)的无障碍设置。AccessibilityLabel 是用户将听到的内容。AccessibilityHint 是关于操作结果的额外提示。不要使用诸如「用于的按钮」之类的短语 — Trait 已经表明它是一个按钮。

Android:TalkBack、Content Description

TalkBack 是 Google 为 Android 提供的屏幕阅读器,是 Android Accessibility Suite 软件包的一部分。与 VoiceOver 一样,它可以朗读界面元素并通过手势控制。TalkBack 支持 100 多种语言,适用于所有具有 Google Play Services 的设备。

Content Description 是 Android 上 accessibilityLabel 的等效物。它通过 XML 中的 android:contentDescription 属性或代码中的 setContentDescription() 方法设置。对于不可聚焦的元素(装饰性 ImageView),请使用 importantForAccessibility="no"。

TalkBack 和 Focus Order

Focus Order(焦点顺序)是 TalkBack 在滑动时在元素之间移动的顺序。默认情况下,Android 使用布局中元素的顺序,但可以通过 accessibilityTraversalBefore 和 accessibilityTraversalAfter 属性更改。这对于具有自定义组件的复杂屏幕非常重要。

在 IT Sectr,我们在每个屏幕上检查 Focus Order。焦点顺序错误是最常见的无障碍问题之一。例如,如果用户在一个标题之后转到评论而不是文章文本 — 这是一个无障碍错误。

WCAG 和标准

WCAG(Web 内容无障碍指南)是由 W3C 开发的国际无障碍标准。当前版本是 WCAG 2.2(2023 年)。该标准分为 4 个原则:Perceivable(可感知)、Operable(可操作)、Understandable(可理解)、Robust(稳健)— 缩写 POUR。

WCAG 级别:A(最低)、AA(中等,在欧盟具有法律强制性)、AAA(最高)。对于移动应用,AA 级别就足够了:文本对比度至少 4.5:1、支持屏幕阅读器、最小目标尺寸 44x44 像素、视频字幕。

WCAG 级别

A 级 — 基本要求:图像的文本替代、键盘控制、至少 3:1 的对比度。AA 级 — 中等:对比度 4.5:1、支持高达 200% 的缩放、正确的标题和标签。AAA 级 — 高级:对比度 7:1、视频的手语、完全语音控制。实际上,大多数公司都瞄准 AA。

参数 iOS Android
屏幕阅读器VoiceOverTalkBack
元素标签accessibilityLabelandroid:contentDescription
元素类型accessibilityTraitsaccessibilityRole(Compose)、焦点重要性
焦点顺序自动(可更改)accessibilityTraversalBefore/After
文本缩放Dynamic Type(UIFontMetrics)sp(scale-independent pixels)
减少动态效果UIAccessibility.isReduceMotionEnabledSettings.Global.getFloat(... ANIMATOR_DURATION_SCALE)

表 2. iOS 和 Android 无障碍 API 的比较。尽管名称不同,但概念是相同的:标签、类型、焦点顺序和文本适配支持。

无障碍测试

无障碍测试是检查应用是否符合 WCAG 标准以及能否与屏幕阅读器正常配合使用。最小测试集:启用 VoiceOver/TalkBack 并浏览应用的每个屏幕。通过聆听检查所有元素是否被朗读、焦点顺序是否合理以及不适当的元素(装饰性)是否被忽略。

自动化工具:Xcode Accessibility Inspector(iOS 的 Xcode 中的审查)、Android Accessibility Scanner(扫描屏幕并发现问题)、Axe DevTools、WAVE。这些工具检查对比度、目标尺寸、标签是否存在以及其他参数。

在 IT Sectr,我们在每次发布前进行无障碍审查。该流程包括:自动审查(Accessibility Inspector)、使用 VoiceOver 和 TalkBack 进行手动测试、对比度和文本缩放检查。我们将问题记录在 Jira 中并分配给 sprint。这使我们能够在所有项目中保持 WCAG AA 级别。

常见问题

如何在 iPhone 上启用 VoiceOver?

设置 → 辅助功能 → VoiceOver。或者在启用辅助功能快捷键时,三次单击侧边按钮(或 Home 按钮)。要快速启用,请使用 Siri:「打开 VoiceOver」。在 Android 上,TalkBack 在设置 → 辅助功能 → TalkBack 中启用。

移动应用需要哪个 WCAG 级别?

为了符合欧盟法律(从 2025 年起执行的 European Accessibility Act)和美国法律(ADA),需要 AA 级别。这意味着:对比度 4.5:1、所有元素都有标签、目标尺寸至少为 44x44 像素、支持屏幕阅读器、视频字幕。

如果目标受众不是残障人士,是否还需要让应用无障碍?

是的。无障碍对每个人都有帮助:老年人、在明亮阳光下使用手机的用户、抱着婴儿的父母(单手操作)。此外,这在许多国家是法律要求。包容性扩大了受众范围并改善了所有人的用户体验。

如何在设计中检查对比度?

使用这些工具:WebAIM Contrast Checker(在线)、适用于 Figma/Sketch 的 Stark。对于 WCAG AA,普通文本的最小比率为 4.5:1,大文本(18px 及以上)为 3:1。对于 AAA — 分别为 7:1 和 4.5:1。

总结

  • Accessibility(a11y) — 使应用可供残障人士使用。13 亿人(16%)患有某种形式的残疾。
  • iOS:VoiceOver、accessibilityLabel、accessibilityTraits、Dynamic Type、Reduce Motion。
  • Android:TalkBack、android:contentDescription、Focus Order、scale-independent pixels。
  • WCAG 2.2 — 国际标准(A、AA、AAA 级别)。移动应用建议使用 AA。
  • WCAG 原则:POUR — Perceivable、Operable、Understandable、Robust。
  • 测试工具:Xcode Accessibility Inspector、Android Accessibility Scanner、使用屏幕阅读器的手动测试。
  • 投资无障碍可将受众扩大 15–20% 并降低法律风险(IT Sectr 数据,2024 年)。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目