Mobil Akadálymentesítés (A11Y) és Információs Architektúra (IA)
Ez a lecke összefoglalja a modern mobilalkalmazások akadálymentesítésének alapelveit Android, iOS és keresztplatformos (Flutter/KMP) környezetben.
Miért van erre szükség? Miért nem csak "felolvasás"?
A XXI. században fontos alapelv, hogy igyekezzünk egy alkalmazást mindenkinek készíteni. Nem mindenkinek tökéletes minden érzékszerve, így az ilyen jellegű problémákkal küzdő felhasználóknak is írjuk a programkódjainkat.
Az A11Y (Accessibility) célja, hogy az alkalmazás használható legyen látássérült, mozgáskorlátozott vagy kognitív nehézségekkel élő felhasználók számára is. Az IA (Information Architecture) pedig az adatok logikus elrendezése. Ha az IA rossz, a kisegítő technológiák (képernyőolvasók) egy "digitális labirintust" fognak közvetíteni.
Az Arany szabály: "Native First"
Soha ne emulálj gombot egy sima konténerből (div, Box, View), ha van gyári komponens! A gyári gombok alapból tartalmazzák a szükséges metaadatokat a képernyőolvasók számára.
Platform-specifikus megoldások
Az alább láthatsz pár megoldást Android és iOS rendszereken, amelyekkel az akadálymentesítési kritériumokat teljesítheted.
| Funkció | Android (Compose/XML) | iOS (SwiftUI/UIKit) | Leírás |
|---|---|---|---|
| Elsődleges címke | contentDescription |
accessibilityLabel |
Mit látunk? (Pl. "Mentés gomb") |
| Típus meghatározása | Role |
accessibilityTraits |
Hogyan viselkedik? (Gomb, Kapcsoló, Fejléc) |
| Súgó szöveg | Nincs külön (leírásba tehető) | accessibilityHint |
Mi történik az akció után? |
| Dinamikus változás | accessibilityLiveRegion |
accessibilityAnnounce |
Szól a gépnek, ha változott egy szöveg (pl. hibaüzenet). |
Egyéb keretrendszerek megoldásai
- Flutter: A
Semanticswidgettel és aSemanticsLabeltulajdonsággal érhető el ugyanez. - KMP: A Compose Multiplatform ugyanazt a
Modifier.semanticsrendszert használja, mint a natív Android.
Információs Architektúra a Mobilon
A mobilos IA legfontosabb eszköze a Fókuszrend (Focus Order) és a Csoportosítás.
Hierarchia és navigáció
A képernyőolvasót használó felhasználók "lapozó" (swipe) mozdulatokkal haladnak az elemek között. Az hibás működés, ha a fókusz össze-vissza ugrál a képernyőn. Erre a megoldás, hogy logikus, fentről lefelé, balról jobbra tartó sorrendet alkalmazz.
Szemantikai összevonás (Merge Semantics)
Egy termékkártyán (kép + név + ár) ne kelljen hármat lapoznia a felhasználónak Javasolt összevonni a kártya elemeit egyetlen fókuszálható egységbe! Példa kód Compose-ban: Modifier.semantics(mergeDescendants = true) { ... }
Modern Workflow: AI és Audit
Ha AI-t (pl. ChatGPT, Cursor, GitHub Copilot) használsz kódgenerálásra, az eredményt mindig auditálni kell, tehát ellenőrizzük, helyes-e a kódunk.
- Vibe Coding: Kérd meg az AI-t: "Tedd WCAG AA kompatibilissé ezt a komponenst, használj natív szemantikát!"
- Statikus audit: Használd a beépített eszközöket:
- Android: Accessibility Scanner app.
- iOS/Xcode: Accessibility Inspector.
- Manuális teszt: Kapcsold be a TalkBack-et (Android) vagy a VoiceOver-t (iOS), csukd be a szemed, és próbáld meg használni a saját appodat!
Mindig validáld a következő pontokat:
- Minden interaktív elemnek (ikonoknak is!) van szöveges leírása?
- A dekoratív elemek (pl. háttérkép) el vannak rejtve az akadálymentesítés elől?
- A fókusz sorrendje logikusan követi a vizuális elrendezést?
Irodalomjegyzék
- Google Accessibility: developer.android.com/guide/topics/ui/accessibility
- Apple Accessibility: developer.apple.com/accessibility/
- W3C Mobile Accessibility Guide: w3.org/WAI/mobile/
- Flutter A11Y Doc: docs.flutter.dev/ui/accessibility/
- Axe DevTools for Mobile: deque.com/axe/mobile-accessibility/