В нашей практике VoiceOver на iPhone читает кнопку «Button» вместо «Добавить в корзину» — потому что у UIImageView с иконкой корзины не задан accessibilityLabel. Пользователь с нарушениями зрения нажимает вслепую. Это не теоретическая ситуация: 2.2 миллиарда человек имеют нарушения зрения, и Apple/Google начали отклонять приложения с грубыми Accessibility-нарушениями при ревью. Мы — команда инженеров с 6-летним опытом в мобильной разработке; на счету более 40 аудитов доступности. Мы проводим аудит доступности и гарантируем соответствие стандартам WCAG 2.1 AA.
Почему accessibilityLabel так часто отсутствует?
Кастомные компоненты — слайдеры, кастомные кнопки, иконки без текста — не имеют автоматических меток. VoiceOver читает координаты или имя класса. На iOS нужно явно ставить accessibilityLabel и accessibilityHint. На Android — contentDescription в XML или через ViewCompat.setAccessibilityDelegate. Разработчики часто забывают задать метку при создании кастомного view. В 70% случаев проблема решается добавлением одной строки кода.
Как правильно организовать фокус после закрытия модалки?
После закрытия модалки фокус VoiceOver/TalkBack остаётся на элементах, которых больше нет на экране — пользователь теряется. На iOS управляем через UIAccessibility.post(notification: .screenChanged, argument: targetView). На Android — ViewCompat.setAccessibilityPaneTitle и sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED). Ручная проверка этого сценария обязательна: автоматические инструменты не всегда ловят потерю фокуса.
Инструменты тестирования
Accessibility Inspector (Xcode). Запускается через Xcode → Open Developer Tool → Accessibility Inspector. Аудит одним кликом — находит отсутствующие метки, мелкие touch targets, проблемы с контрастом. Работает на симуляторе и на реальном устройстве.
Accessibility Scanner (Android). Приложение от Google, сканирует экран и выдаёт список проблем с классификацией по типу. Интегрируется в Espresso через AccessibilityChecks.enable() — автоматически запускает проверки при каждом действии в тесте:
@Before fun setup() { AccessibilityChecks.enable() .setRunChecksFromRootView(true) } Каждый Espresso-тест теперь дополнительно проверяет a11y — любое нарушение роняет тест. Accessibility Scanner обрабатывает экран за 2–3 секунды, что в 5 раз быстрее ручной проверки.
Ручное тестирование с VoiceOver/TalkBack. Проходим ключевые сценарии: регистрация, покупка, основной user flow — только через жесты скринридера, без визуального контроля. Это выявляет семантические проблемы, которые автоматика не поймёт: логический порядок чтения элементов, непонятные формулировки меток, потерянный фокус.
axe DevTools Mobile. Коммерческий инструмент с более детальной классификацией нарушений по WCAG. Выдаёт отчёт с severity и ссылками на критерии. Полезен при подготовке к EU Accessibility Act compliance.
Когда требуется ручное тестирование?
Автоматические инструменты не проверяют логику чтения и удобство восприятия. Если приложение содержит сложные анимации, динамические списки или нестандартные жесты — без ручного прогона с VoiceOver/TalkBack не обойтись. Мы рекомендуем проводить ручное тестирование после каждого значительного релиза.
Матрица проверок
| Нарушение | Автотест | Ручной тест |
|---|---|---|
| Отсутствие accessibilityLabel | Accessibility Scanner / Inspector | VoiceOver |
| Неверный порядок фокуса | — | VoiceOver / TalkBack |
| Touch target < 44pt/48dp | Accessibility Inspector | — |
| Контрастность | Colour Contrast Analyser | — |
| Анимации при reduce motion | — | Settings → Accessibility |
Сравнение инструментов аудита
| Инструмент | Скорость | Глубина анализа | Цена |
|---|---|---|---|
| Accessibility Inspector | быстрый | базовая | бесплатно |
| Accessibility Scanner | быстрый | базовая | бесплатно |
| axe DevTools Mobile | средняя | полная WCAG | коммерческая |
Процесс работы
- Аудит — прогон через Accessibility Inspector и Scanner, получение списка нарушений с приоритизацией.
- Автоматизация — добавляем
AccessibilityChecks.enable()в Espresso-тесты, чтобы каждое действие проверяло a11y. - Ручная проверка — проходим ключевые сценарии с VoiceOver и TalkBack, фиксируем семантические проблемы.
- Отчёт — документируем все нарушения с классификацией по WCAG 2.1 (A/AA) и рекомендациями по исправлению.
Что входит в работу
Мы предоставляем подробный отчёт с найденными нарушениями и их критичностью, рекомендации по исправлению для каждого типа ошибок, обновлённые автотесты с включёнными accessibility-проверками, краткую инструкцию для команды (iOS/Android) по предотвращению регрессов, а также сертификат соответствия WCAG 2.1 AA (по запросу). Согласно WCAG 2.1 Success Criterion 1.4.3, минимальный коэффициент контрастности для обычного текста — 4.5:1.
Сроки и стоимость
Аудит среднего приложения занимает от 2 до 4 дней. Полная документация для EU Accessibility Act может добавить ещё 2 дня. Стоимость рассчитывается индивидуально, исходя из объёма экранов и сложности сценариев. Свяжитесь с нами — мы оценим ваш проект и предложим оптимальный план. Закажите консультацию по доступности сегодня.
Частые ошибки при внедрении доступности
- Отсутствие контраста у плейсхолдеров и подсказок — часто используют серый #999999 на белом.
- Мелкие кнопки в навигационных панелях и тулбарах — меньше 44pt/48dp.
- Игнорирование жестов — если есть swipe-to-delete, нужно дублировать через длительное нажатие.







