Accessibility (a11y) — это практика создания приложений, которые могут использовать люди с ограниченными возможностями. По данным Всемирной организации здравоохранения, более 1,3 миллиарда человек (16% населения) живут с той или иной формой инвалидности. ВОЗ (отчёт 2024) подчёркивает, что доступность цифровых продуктов становится критически важной. Разберём, как обеспечить доступность на iOS и Android, и какие стандарты существуют.
Главное
Accessibility (сокращённо a11y — буква a + 11 букв + y) — это свойство продукта быть доступным для людей с инвалидностью. В контексте мобильных приложений это означает: поддержку скринридеров (VoiceOver, TalkBack), достаточный размер текста, высокую контрастность, правильный порядок фокуса при навигации с клавиатуры и отсутствие анимированных элементов, вызывающих головокружение.
Инклюзивность — не только этическая, но и юридическая обязанность. Во многих странах действуют законы о цифровой доступности: ADA (США), Section 508, European Accessibility Act (ЕС, с 2025 года — обязателен для приложений). По данным Business Disability Forum, компании, инвестирующие в доступность, увеличивают аудиторию на 15–20% и снижают юридические риски.
В IT Sectr мы проверяем доступность на каждом этапе разработки. Наш опыт показывает: исправление проблем доступности на этапе дизайна обходится в 10 раз дешевле, чем после релиза. Accessibility — это не фича, а базовое требование к современному приложению.
Экосистема Apple предлагает мощные инструменты доступности. VoiceOver — встроенный скринридер (экранный диктор), который озвучивает всё, что происходит на экране. Пользователь управляет устройством жестами: свайп вправо — следующий элемент, свайп влево — предыдущий, двойное нажатие — активация.
Accessibility Label — это текст, который VoiceOver читает для элемента. По умолчанию iOS использует текст кнопки или label, но для иконок и графических элементов нужно задать label явно. Accessibility Trait — свойство, описывающее тип элемента: button (кнопка), header (заголовок), link (ссылка), image (изображение). Правильные traits помогают пользователю понять, как взаимодействовать с элементом.
VoiceOver поддерживает более 40 языков и работает на всех устройствах Apple. Для разработчика главное — задать корректные accessibilityLabel и accessibilityTraits для каждого элемента интерфейса. Если элемент не должен быть доступен (декоративное изображение), установите isAccessibilityElement = false.
// Swift — настройка accessibility для кнопки
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("Открывает меню отправки")
}
}
Код показывает настройку accessibility для кнопки без текста (только иконка). AccessibilityLabel — это то, что услышит пользователь. AccessibilityHint — дополнительная подсказка о результате действия. Не используйте в label фразы вроде «кнопка для» — Trait уже сообщает, что это кнопка.
TalkBack — это скринридер от Google для Android, входящий в пакет Android Accessibility Suite. Как и VoiceOver, он озвучивает элементы интерфейса и управляется жестами. TalkBack поддерживает более 100 языков и работает на всех устройствах с Google Play Services.
Content Description — аналог accessibilityLabel на Android. Задаётся через атрибут android:contentDescription в XML или через метод setContentDescription() в коде. Для нефокусных элементов (декоративных ImageView) используйте importantForAccessibility="no".
Focus Order (порядок фокуса) — последовательность, в которой TalkBack переходит между элементами при свайпе. По умолчанию Android использует порядок расположения элементов в layout, но его можно изменить через атрибуты accessibilityTraversalBefore и accessibilityTraversalAfter. Это важно для сложных экранов с кастомными компонентами.
В IT Sectr мы проверяем Focus Order на каждом экране. Ошибка порядка фокуса — одна из самых частых проблем в accessibility. Например, если после заголовка пользователь переходит к комментариям, а не к тексту статьи — это баг acessibility.
WCAG (Web Content Accessibility Guidelines) — международный стандарт доступности, разработанный W3C. Текущая версия — WCAG 2.2 (2023). Стандарт делится на 4 принципа: Perceivable (воспринимаемость), Operable (управляемость), Understandable (понятность), Robust (надёжность) — аббревиатура POUR.
Уровни WCAG: A (минимальный), AA (средний, обязателен по закону в ЕС), AAA (максимальный). Для мобильных приложений достаточен уровень AA: контраст текста не менее 4.5:1, поддержка скринридеров, минимальный размер таргетов 44x44 пикселя, субтитры для видео.
Уровень A — базовые требования: текстовые альтернативы для изображений, управление с клавиатуры, контраст не менее 3:1. Уровень AA — средний: контраст 4.5:1, поддержка масштабирования до 200%, правильные заголовки и label. Уровень AAA — высокий: контраст 7:1, язык жестов для видео, полное управление голосом. На практике большинство компаний целится на AA.
| Параметр | iOS | Android |
|---|---|---|
| Скринридер | VoiceOver | TalkBack |
| Метка элемента | accessibilityLabel | android:contentDescription |
| Тип элемента | accessibilityTraits | accessibilityRole (Compose), важность фокуса |
| Порядок фокуса | Автоматический (можно изменить) | accessibilityTraversalBefore/After |
| Масштабирование текста | Dynamic Type (UIFontMetrics) | sp (scale-independent pixels) |
| Уменьшение анимации | UIAccessibility.isReduceMotionEnabled | Settings.Global.getFloat(... ANIMATOR_DURATION_SCALE) |
Таблица 2. Сравнение iOS и Android API для доступности. Несмотря на разные названия, концепции идентичны: метка, тип, порядок фокуса и поддержка адаптации текста.
Тестирование доступности — это проверка приложения на соответствие стандартам WCAG и корректную работу со скринридерами. Минимальный набор тестов: включить VoiceOver/TalkBack и пройти по всем экранам приложения. На слух проверьте, что все элементы озвучиваются, порядок фокуса логичен, а неправильные элементы (декоративные) игнорируются.
Автоматизированные инструменты: Xcode Accessibility Inspector (аудит в Xcode для iOS), Android Accessibility Scanner (сканирует экран и находит проблемы), Axe DevTools, WAVE. Эти инструменты проверяют контрастность, размер таргетов, наличие меток и другие параметры.
В IT Sectr мы проводим accessibility-ревью перед каждым релизом. Процесс включает: автоматический аудит (Accessibility Inspector), ручное тестирование с VoiceOver и TalkBack, проверку контрастности и масштабирования текста. Мы фиксируем проблемы в Jira и назначаем их на спринт. Это позволяет поддерживать уровень AA WCAG на всех проектах.
Часто задаваемые вопросы
Настройки → Универсальный доступ → VoiceOver. Или трижды нажмите боковую кнопку (или кнопку Home) при включённом быстром доступе. Для быстрого включения используйте Siri: «Включи VoiceOver». На Android TalkBack включается в Настройки → Специальные возможности → TalkBack.
Для соответствия законодательству ЕС (European Accessibility Act с 2025) и США (ADA) требуется уровень AA. Это означает: контраст 4.5:1, все элементы имеют метки, размер таргетов от 44x44 пикселей, поддержка скринридеров, субтитры для видео.
Да. Accessibility помогает всем: пожилым людям, пользователям в яркий солнечный день, родителям с ребёнком на руках (одной рукой). Кроме того, это юридическое требование во многих странах. Инклюзивность расширяет аудиторию и улучшает UX для всех.
Используйте инструменты: WebAIM Contrast Checker (онлайн), Stark для Figma/Sketch. Для WCAG AA минимальное соотношение — 4.5:1 для обычного текста и 3:1 для крупного текста (18px и больше). Для AAA — 7:1 и 4.5:1 соответственно.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.