← cd ../blog

Accesibilitatea ca sistem: Șeptică și cititoarele de ecran

Accesibilitatea ca sistem: Șeptică și cititoarele de ecran — imagine de copertă

Dezvoltarea unui joc de cărți pentru mobil pare, la prima vedere, un exercițiu simplu de interfață grafică. Dar când pui la masă un utilizator care se bazează pe VoiceOver (iOS) sau TalkBack (Android), provocarea devine una de arhitectură a informației. Cum transformi o masă de joc vizuală într-o experiență auditivă fluidă? În acest articol, explorăm cum am adaptat “Șeptica” pentru a fi cu adevărat accesibilă.

Cărțile și etichetarea: Dincolo de imagini

Într-un joc de cărți, informația este critică. Cititorul de ecran nu vede un “valet de treflă”, ci vede un UIView sau Composable. Trebuie să ne asigurăm că fiecare element are un accessibilityLabel clar. Nu folosim doar numele cărții, ci și contextul.

// Exemplu Swift pentru VoiceOver
cardView.isAccessibilityElement = true
cardView.accessibilityLabel = "Valet de treflă, carte disponibilă"
cardView.accessibilityTraits = .button

Marcarea cărții de început și feedback-ul vizual

Pentru jucătorii cu deficiențe de vedere care au resturi vizuale, am implementat o tentă verde subtilă pentru cartea care deschide runda (lead card). Aceasta este oglindită în mâna jucătorului pentru a oferi un indiciu vizual rapid, dar pentru accesibilitate, această “tentă” trebuie să fie anunțată prin accessibilityHint.

// Exemplu Kotlin (Jetpack Compose)
Modifier.semantics {
    contentDescription = "Carte de început: 7 de cupă"
    stateDescription = "Această carte stabilește culoarea rundei"
}

Play-by-play: Schimbarea perspectivei

Cea mai mare greșeală în jocurile multiplayer este utilizarea mesajelor “Your turn”. Pentru un utilizator de cititor de ecran, acest lucru este confuz dacă anunțul vine în timp ce altcineva joacă. Am trecut la my_turn ca un eveniment de sistem care declanșează un AccessibilityAnnouncement imediat ce starea jocului confirmă prioritatea jucătorului.

Design etic: AdMob și animațiile

Accesibilitatea înseamnă și respect față de utilizator. Am decis ca reclamele AdMob să fie complet dezactivate dacă detectăm că un serviciu de citire a ecranului este activ. Reclamele pot întrerupe fluxul narativ al jocului și sunt adesea inaccesibile.

În plus, am onorat setările de sistem pentru mișcare. Dacă utilizatorul are “Reduce Motion” activat, am eliminat animațiile de tranziție ale cărților. Stările devin instantanee:

// Onorarea setărilor de sistem
if UIAccessibility.isReduceMotionEnabled {
    card.position = finalPosition // Fără .animate()
} else {
    UIView.animate(withDuration: 0.3) { card.position = finalPosition }
}

Concluzie

Accesibilitatea nu este un feature adăugat la final, ci un mod de a gândi interacțiunea. Când am început să testăm Șeptica cu VoiceOver, am realizat că jocul devine mult mai logic și pentru utilizatorii fără dizabilități. O interfață curată, cu etichete precise, este o interfață mai bună pentru toată lumea.