Accessibility (a11y) to praktyka tworzenia aplikacji, które mogą być używane przez osoby z niepełnosprawnościami. Według Światowej Organizacji Zdrowia ponad 1,3 miliarda ludzi (16% populacji) żyje z jakąś formą niepełnosprawności. WHO (raport 2024) podkreśla, że dostępność cyfrowa staje się krytycznie ważna. Przyjrzyjmy się, jak zapewnić dostępność na iOS i Android oraz jakie standardy istnieją.
Najważniejsze
Accessibility (w skrócie a11y — litera a + 11 liter + y) to właściwość produktu polegająca na możliwości korzystania z niego przez osoby z niepełnosprawnościami. W kontekście aplikacji mobilnych oznacza to: wsparcie dla czytników ekranu (VoiceOver, TalkBack), odpowiedni rozmiar tekstu, wysoki kontrast, prawidłową kolejność fokusu podczas nawigacji klawiaturą oraz brak animowanych elementów powodujących zawroty głowy.
Inkluzywność to nie tylko obowiązek etyczny, ale także prawny. W wielu krajach obowiązują przepisy dotyczące dostępności cyfrowej: ADA (USA), Section 508, European Accessibility Act (UE, obowiązkowy dla aplikacji od 2025). Według Business Disability Forum firmy inwestujące w dostępność zwiększają swoją publiczność o 15–20% i zmniejszają ryzyko prawne.
W IT Sectr sprawdzamy dostępność na każdym etapie rozwoju. Nasze doświadczenie pokazuje: naprawa problemów z dostępnością na etapie projektowania jest 10 razy tańsza niż po wydaniu. Dostępność to nie funkcja, ale podstawowy wymóg dla nowoczesnej aplikacji.
Ekostystem Apple oferuje potężne narzędzia dostępności. VoiceOver to wbudowany czytnik ekranu, który wypowiada wszystko, co dzieje się na ekranie. Użytkownik steruje urządzeniem gestami: przesunięcie w prawo — następny element, przesunięcie w lewo — poprzedni element, podwójne dotknięcie — aktywacja.
Accessibility Label to tekst, który VoiceOver czyta dla elementu. Domyślnie iOS używa tekstu przycisku lub etykiety, ale dla ikon i elementów graficznych należy jawnie ustawić etykietę. Accessibility Trait to właściwość opisująca typ elementu: button (przycisk), header (nagłówek), link (link), image (obraz). Prawidłowe cechy pomagają użytkownikowi zrozumieć, jak wchodzić w interakcję z elementem.
VoiceOver obsługuje ponad 40 języków i działa na wszystkich urządzeniach Apple. Dla programisty najważniejsze jest ustawienie prawidłowych accessibilityLabel i accessibilityTraits dla każdego elementu interfejsu. Jeśli element nie powinien być dostępny (obraz dekoracyjny), ustaw isAccessibilityElement = false.
// Swift — konfiguracja dostępności dla przycisku
let shareButton = UIButton()
shareButton.setImage(UIImage(named: "share-icon"), for: .normal)
shareButton.accessibilityLabel = "Udostępnij ten artykuł"
shareButton.accessibilityHint = "Otwiera okno wyboru metody wysyłania"
shareButton.accessibilityTraits = .button
// SwiftUI — jeszcze prostsze
struct ShareButtonView: View {
var body: some View {
Button(action: share) {
Image(systemName: "square.and.arrow.up")
}
.accessibilityLabel("Udostępnij")
.accessibilityHint("Otwiera menu udostępniania")
}
}
Kod pokazuje konfigurację dostępności dla przycisku bez tekstu (tylko ikona). AccessibilityLabel to to, co usłyszy użytkownik. AccessibilityHint to dodatkowa podpowiedź o wyniku działania. Nie używaj w etykiecie zwrotów typu «przycisk do» — Trait już informuje, że to przycisk.
TalkBack to czytnik ekranu Google dla Androida, będący częścią pakietu Android Accessibility Suite. Podobnie jak VoiceOver, wypowiada elementy interfejsu i jest sterowany gestami. TalkBack obsługuje ponad 100 języków i działa na wszystkich urządzeniach z Google Play Services.
Content Description to odpowiednik accessibilityLabel na Androidzie. Ustawia się go poprzez atrybut android:contentDescription w XML lub metodę setContentDescription() w kodzie. Dla elementów niefokusowalnych (dekoracyjny ImageView) użyj importantForAccessibility="no".
Focus Order (kolejność fokusu) to sekwencja, w jakiej TalkBack przechodzi między elementami podczas przesuwania. Domyślnie Android używa kolejności elementów w układzie, ale można ją zmienić za pomocą atrybutów accessibilityTraversalBefore i accessibilityTraversalAfter. Jest to ważne dla złożonych ekranów z niestandardowymi komponentami.
W IT Sectr sprawdzamy Focus Order na każdym ekranie. Błędy kolejności fokusu to jedne z najczęstszych problemów z dostępnością. Na przykład, jeśli po nagłówku użytkownik przejdzie do komentarzy zamiast do tekstu artykułu — to błąd dostępności.
WCAG (Web Content Accessibility Guidelines) to międzynarodowy standard dostępności opracowany przez W3C. Obecna wersja to WCAG 2.2 (2023). Standard dzieli się na 4 zasady: Perceivable (postrzegalność), Operable (funkcjonalność), Understandable (zrozumiałość), Robust (solidność) — skrót POUR.
Poziomy WCAG: A (minimalny), AA (średni, wymagany prawnie w UE), AAA (maksymalny). Dla aplikacji mobilnych wystarczający jest poziom AA: kontrast tekstu co najmniej 4.5:1, wsparcie czytników ekranu, minimalny rozmiar celów 44x44 piksele, napisy do filmów.
Poziom A — podstawowe wymagania: alternatywy tekstowe dla obrazów, sterowanie klawiaturą, kontrast co najmniej 3:1. Poziom AA — średni: kontrast 4.5:1, obsługa skalowania do 200%, prawidłowe nagłówki i etykiety. Poziom AAA — wysoki: kontrast 7:1, język migowy dla filmów, pełne sterowanie głosowe. W praktyce większość firm celuje w AA.
| Parametr | iOS | Android |
|---|---|---|
| Czytnik ekranu | VoiceOver | TalkBack |
| Etykieta elementu | accessibilityLabel | android:contentDescription |
| Typ elementu | accessibilityTraits | accessibilityRole (Compose), ważność fokusu |
| Kolejność fokusu | Automatyczna (można zmienić) | accessibilityTraversalBefore/After |
| Skalowanie tekstu | Dynamic Type (UIFontMetrics) | sp (scale-independent pixels) |
| Zmniejsz ruch | UIAccessibility.isReduceMotionEnabled | Settings.Global.getFloat(... ANIMATOR_DURATION_SCALE) |
Tabela 2. Porównanie API dostępności iOS i Android. Pomimo różnych nazw, koncepcje są identyczne: etykieta, typ, kolejność fokusu i obsługa adaptacji tekstu.
Testowanie dostępności to sprawdzenie aplikacji pod kątem zgodności ze standardami WCAG i poprawnej pracy z czytnikami ekranu. Minimalny zestaw testów: włącz VoiceOver/TalkBack i przejdź przez wszystkie ekrany aplikacji. Słuchaj, aby sprawdzić, czy wszystkie elementy są odczytywane, kolejność fokusu jest logiczna, a nieodpowiednie elementy (dekoracyjne) są ignorowane.
Narzędzia zautomatyzowane: Xcode Accessibility Inspector (audyt w Xcode dla iOS), Android Accessibility Scanner (skanuje ekran i znajduje problemy), Axe DevTools, WAVE. Narzędzia te sprawdzają kontrast, rozmiar celów, obecność etykiet i inne parametry.
W IT Sectr przeprowadzamy przegląd dostępności przed każdym wydaniem. Proces obejmuje: zautomatyzowany audyt (Accessibility Inspector), ręczne testowanie z VoiceOver i TalkBack, sprawdzanie kontrastu i skalowania tekstu. Rejestrujemy problemy w Jira i przypisujemy je do sprintu. Pozwala to utrzymać poziom AA WCAG we wszystkich projektach.
Często zadawane pytania
Ustawienia → Dostępność → VoiceOver. Lub trzykrotnie naciśnij przycisk boczny (lub przycisk Home) przy włączonym skrócie dostępności. Do szybkiego włączenia użyj Siri: «Włącz VoiceOver». Na Androidzie TalkBack włącza się w Ustawienia → Dostępność → TalkBack.
Do zgodności z przepisami UE (European Accessibility Act od 2025) i USA (ADA) wymagany jest poziom AA. Oznacza to: kontrast 4.5:1, wszystkie elementy mają etykiety, rozmiar celów co najmniej 44x44 piksele, wsparcie czytników ekranu, napisy do filmów.
Tak. Dostępność pomaga wszystkim: starszym osobom, użytkownikom w słoneczny dzień, rodzicom trzymającym dziecko (jedną ręką). Ponadto jest to wymóg prawny w wielu krajach. Inkluzywność poszerza publiczność i poprawia UX dla wszystkich.
Użyj tych narzędzi: WebAIM Contrast Checker (online), Stark dla Figma/Sketch. Dla WCAG AA minimalny współczynnik wynosi 4.5:1 dla zwykłego tekstu i 3:1 dla dużego tekstu (18px i więcej). Dla AAA — odpowiednio 7:1 i 4.5:1.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.