Accessibility — əsaslar, kor istifadəçilər üçün VoiceOver və TalkBack

Müəllif: IT Sectr Dərc olunub: 2026-02-26 Oxuma vaxtı: 9 dəq

Accessibility (a11y) — mobil tətbiqin əlilliyi olan insanlar üçün əlçatanlığının təmin edilməsi. Ekran oxuyucularının dəstəyini (iOS-da VoiceOver, Android-də TalkBack), mətnin miqyaslanmasını (Dynamic Type), kifayət qədər rəng kontrastını (WCAG 2.1 səviyyə AA), görmədən naviqasiyanı və jestlərə alternativləri əhatə edir. ÜST-nin (2023) məlumatına görə, 1,3 milyarddan çox insan (əhalinin 16%) müxtəlif əlillik formaları ilə yaşayır — accessibility seçim deyil, zərurətdir. Ətraflı — Apple-ın accessibility üzrə rəsmi sənədlərində.

Əsas məqamlar

  • Accessibility — tətbiqin əlilliyi olan insanlar üçün əlçatanlığı (görmə, eşitmə, motorika)
  • VoiceOver — iOS və macOS-da interfeys elementlərini səslə oxuyan Apple ekran oxuyucusu
  • TalkBack — Android üçün Google ekran oxuyucusu, görmədən jest idarəetməsi ilə
  • WCAG 2.1 — beynəlxalq əlçatanlıq standartı: kontrast 4.5:1, toxunma sahələrinin ölçüsü 44×44pt
  • contentDescription — TalkBack tərəfindən oxunan elementləri təsvir etmək üçün Android atributu

Mobil tətbiqlərdə Accessibility (a11y) nədir?

Accessibility (qısaca a11y — «a» və «y» arasında 11 hərf) — görmə, eşitmə, motorika və idrak xüsusiyyətlərində pozuntusu olan insanlar üçün əlçatan tətbiqlərin hazırlanması təcrübəsi. Mobil inkişafda accessibility dörd əsas ssenarini əhatə edir: kor istifadəçilər (ekran oxuyucuları), zəif görənlər (miqyaslama, kontrast), kar və eşitmə qabiliyyəti zəif olanlar (altyazılar, səsə vizual alternativlər), motorikası məhdud istifadəçilər (səs idarəetməsi, Switch Control, böyük toxunma sahəsi).

Hüquqi tələblər — bir çox ölkələrdə accessibility qanunla məcburidir. ABŞ: Section 508 və ADA. Aİ: European Accessibility Act (2025). Böyük Britaniya: Equality Act 2010. Accessibility dəstəyi olmadan tətbiq məhkəmə iddiasının obyektinə çevrilə bilər — ABŞ-da 2023-cü ildə rəqəmsal məhsulların əlçatmazlığı ilə bağlı 4000-dən çox iddia qaldırılıb. Apple və Google tətbiqlərin moderasiyası zamanı accessibility-ni yoxlayır: App Store Review Guidelines (4.2) və Google Play Store minimal əlçatanlıq dəstəyi tələb edir.

Biznes arqumenti — əlçatanlıq auditoriyanı artırır. Return on Disability (2021) məlumatına görə, əlilliyi olan insanlar ildə $13 trilyon sərəncamında olan gəlirə nəzarət edir. Əlçatan tətbiqlər həmçinin axtarışda daha yaxşı sıralanır (semantik HTML, alternativ mətnlər), daha yüksək istifadəçi reytinqinə və UX problemləri haqqında daha az rəyə malikdir. IT Sectr-də biz accessibility-ni bütün layihələrin definition of done hissəsinə daxil edirik — bu keyfiyyət standartıdır, seçmə yaxşılaşdırma deyil.

iOS-da Accessibility: VoiceOver və UIAccessibility

VoiceOver — iOS, iPadOS və macOS-a daxil edilmiş Apple ekran oxuyucusu. İstifadəçi barmağını ekran üzərində gəzdirir, VoiceOver barmağın altındakı elementin adını oxuyur. İki dəfə toxunma — elementin aktivləşdirilməsi. VoiceOver 40-dan çox jesti dəstəkləyir: üç barmaq sürüşdürmə (səhifələmə), iki barmaq iki dəfə toxunma (dayan), Z-jesti (qayıt). Developer VoiceOver-in nəyi və necə oxuyacağını UIAccessibility protokolu və accessibilityLabel, accessibilityTraits, accessibilityHint xüsusiyyətləri vasitəsilə idarə edir.

swift
class CustomButton: UIButton {

    override var isAccessibilityElement: Bool {
        get { return true }
        set {}
    }

    // override accessibilityLabel
    override var accessibilityLabel: String? {
        get { return "Forma göndərmə düyməsi" }
        set {}
    }

    // override accessibilityHint
    override var accessibilityHint: String? {
        get { return "Məlumatı göndərmək üçün iki dəfə toxunun" }
        set {}
    }

    // override accessibilityTraits
    override var accessibilityTraits: UIAccessibilityTraits {
        get { return .button }
        set {}
    }
}

// Dynamic Type — mətnin miqyaslanması
titleLabel.font = UIFontMetrics.default.scaledFont(
    for: UIFont.systemFont(ofSize: 16)
)
titleLabel.adjustsFontForContentSizeCategory = true

Dinamik tipoqrafika — iOS-da Dynamic Type istifadəçiyə mətn ölçüsünü seçməyə imkan verir (XS-dən XXXL-ə qədər). Developer avtomatik miqyaslama üçün UIFontMetrics.scaledFont istifadə edir. Mətn bütün ölçülərdə düzgün göstərilməlidir: sətirlər kəsilməməli, düymələr mətnə proporsional böyüməlidir. UITableView mətn ölçüsü dəyişdikdə hüceyrələrin hündürlüyünü avtomatik yeniləyir. Dynamic Type-ı gözardı etmək — tətbiqi zəif görən istifadəçilər üçün əlçatmaz etmək deməkdir.

SwiftUI-də Accessibility

SwiftUI accessibility üçün modifikatorlar təqdim edir: .accessibilityLabel(), .accessibilityHint(), .accessibilityAddTraits(), .accessibilitySortPriority(). Standart SwiftUI elementləri (Text, Button, Image) avtomatik etiketlərlə artıq accessibility elementləridir. Xüsusi View-lər üçün uşaq elementləri birinə birləşdirmək üçün .accessibilityElement(children: .combine) istifadə edin. SwiftUI avtomatik olaraq Dynamic Type və VoiceOver-i dəstəkləyir.

swift
VStack {
    Image(systemName: "trash")
        .accessibilityLabel(Text("Elementi sil"))
    Text("Səbət")
        .font(.body)
}
.accessibilityElement(children: .combine)
.accessibilityAddTraits(.isButton)
.accessibilityHint(Text("Seçilmiş elementi bərpa etmək imkanı olmadan silir"))

Android-də Accessibility: TalkBack və contentDescription

TalkBack — Google ekran oxuyucusu, əksər Android cihazlarında əvvəlcədən quraşdırılıb (Android 5+ bütün versiyaları üçün Google Play-də mövcuddur). TalkBack VoiceOver ilə eyni jestlərdən istifadə edir: naviqasiya üçün sürüşdürmə, aktivləşdirmə üçün iki dəfə toxunma. Developer elementlərin təsvirini XML-də android:contentDescription atributu və ya kodda setContentDescription() vasitəsilə təyin edir. ImageView üçün contentDescription məcburidir — onsuz TalkBack «işarələnməyib» deyə bildirəcək və ya fayl adını oxuyacaq.

kotlin
// XML: ImageView üçün contentDescription
<ImageView
    android:id="@+id/iconDelete"
    android:src="@drawable/ic_delete"
    android:contentDescription="@string/delete_button_desc"
    android:focusable="true"
    android:clickable="true" />

// Kotlin: proqram təyinatı
iconDelete.contentDescription = getString(R.string.delete_button_desc)

// Accessibility Delegate (xüsusi)
iconDelete.accessibilityDelegate = object : View.AccessibilityDelegate() {
    override fun onInitializeAccessibilityNodeInfo(
        host: View, info: AccessibilityNodeInfo
    ) {
        super.onInitializeAccessibilityNodeInfo(host, info)
        info.text = "Sil düyməsi"
        info.contentDescription = "Seçilmiş elementi sil"
        info.className = Button::class.java.name
    }
}

// Dinamik yeniləmələr üçün Live Regions
textView.accessibilityLiveRegion = View.ACCESSIBILITY_LIVE_REGION_POLITE

Live Regions — Android-in fokus olmadan məzmun dəyişikliyi barədə TalkBack-ə xəbərdarlıq etmək mexanizmi. android:accessibilityLiveRegion atributu üç qiymət alır: none (xəbərdarlıq yoxdur), polite (cari danışıqdan sonra bildir), assertive (dərhal bildir). Yüklənmə statusu yeniləmələri üçün polite, kritik səhvlər üçün assertive istifadə edin. Assertive-dən sui-istifadə istifadəçi üçün xaosa səbəb olacaq — TalkBack daim cari hərəkəti kəsəcək.

Accessibility Scanner

Accessibility Scanner — mənbə koduna giriş olmadan Android tətbiqlərinin əlçatanlığını test etmək üçün Google-dan pulsuz proqram. Skaner yoxlayır: mətn kontrastı, toxunma sahələrinin ölçüsü (Android Accessibility Guidelines-ə görə minimum 48×48dp), ImageView üçün contentDescription-ın mövcudluğu, elementlərin iyerarxiyasının düzgünlüyü. Avtomatik testlər üçün Espresso-dan AccessibilityChecks istifadə edin — onlar CI/CD ilə inteqrasiya olunur və hər build zamanı accessibility-ni yoxlayır.

WCAG 2.1: kontrast, ölçü və toxunma sahələri

WCAG 2.1 (Web Content Accessibility Guidelines) — W3C tərəfindən hazırlanmış beynəlxalq əlçatanlıq standartı. 2.1 versiyası (2018) mobil tətbiqlər üçün 13 əlavə meyar daxildir. Uyğunluq səviyyələri: A (minimal), AA (əksər təşkilatlar üçün məcburi), AAA (maksimal). Apple və Google tətbiqlərin nəşri üçün minimal olaraq AA səviyyəsini tövsiyə edir. WCAG 2.2 2023-cü ildə fokus və daxiletmə ilə bağlı dəqiqləşdirmələrlə buraxılıb.

Əsas meyarlar mobil inkişaf üçün: mətn kontrastı 4.5:1-dən az olmamalıdır (AA) və ya 7:1 (AAA), toxunma sahələrinin ölçüsü minimum 44×44pt (iOS) və ya 48×48dp (Android), funksionallığı itirmədən üfüqi və şaquli oriyentasiyanın dəstəyi, animasiyanı söndürmə imkanı (prefers-reduced-motion), multimediaya altyazıların mövcudluğu, səs idarəetməsi ilə uyğunluq (iOS-da Voice Control, Android-də Voice Access).

WCAG 2.1 meyarıSəviyyəiOS üçün tələbAndroid üçün tələb
1.4.3 Kontrast (mətn)AA4.5:1 adi üçün, 3:1 böyük üçün4.5:1 adi üçün, 3:1 böyük üçün
1.4.11 Kontrast (qeyri-mətn)AA3:1 ikonlar, sərhədlər üçün3:1 ikonlar, sərhədlər üçün
2.5.5 Hədəf ölçüsüAAA44×44pt48×48dp
2.3.3 AnimasiyaAAAprefers-reduced-motionandroid:animateLayoutChanges
4.1.2 Ad, rol, dəyərAaccessibilityLabel, traitscontentDescription, role

Kontrast yoxlama alətləri — Colour Contrast Analyser (TPGI), WebAIM Contrast Checker, Stark (Figma), Accessibility Inspector (Xcode). IT Sectr-də kontrastı dizayn mərhələsində (Figma + Stark) və yenidən inkişaf mərhələsində (Accessibility Inspector / Accessibility Scanner) yoxlayırıq. Minimum tələb — 18pt-dən (14pt bold) kiçik bütün mətn üçün 4.5:1. Loqotiplər və dekorativ elementlər üçün kontrast tələb olunmur.

Əlçatanlığın test edilməsi: alətlər və yoxlama siyahısı

iOS testi — Xcode-da Accessibility Inspector (Xcode → Open Developer Tool → Accessibility Inspector) hər element üçün label, traits, hint yoxlayır. VoiceOver-ı parametrlərdə və ya Accessibility Shortcut (düyməni üç dəfə basmaq) vasitəsilə aktivləşdirmək olar. Avtomatik testlər üçün XCUITest-i XCTAssertTrue(app.staticTexts["label"].isAccessibilityElement) ilə istifadə edin. Apple VoiceOver aktivləşdirilmiş halda tətbiqin bütün ekranlarını test etməyi tövsiyə edir.

Android testi — Accessibility Scanner (Play Store) kontrast, toxunma sahələrinin ölçüsü, contentDescription yoxlayır. Avtomatlaşdırma üçün: Espresso AccessibilityChecks (import: androidTestImplementation 'androidx.test.espresso:espresso-accessibility:3.5.1'). Google yoxlama siyahısını tövsiyə edir: hər ImageView-in contentDescription-ı var, toxunma sahələri 48×48dp-dən az deyil, mətn 200%-ə qədər kəsilmədən miqyaslanır, bütün elementlər TalkBack sürüşdürməsi ilə əldə edilə bilər.

IT Sectr yoxlama siyahısı — buraxılışdan əvvəl yoxlayırıq: (1) VoiceOver/TalkBack bütün elementləri düzgün oxuyur, (2) mətn funksionallığı itirmədən maksimum ölçüyə qədər miqyaslanır, (3) bütün ImageView-lərin contentDescription-ı var, (4) mətn kontrastı bütün mövzularda ≥4.5:1, (5) toxunma sahələri ≥44pt/48dp, (6) yalnız uzun basma ilə əldə edilən kontekst menyusu yoxdur, (7) sistem parametrlərində Reduce Motion / Remove Animations dəstəyi. Bu yoxlama siyahısı hər sprintin definition of done hissəsinə daxildir.

Tez-tez verilən suallar

VoiceOver TalkBack-dən nə ilə fərqlənir?

VoiceOver — iOS, iPadOS, macOS üçün Apple ekran oxuyucusu. Bir və bir neçə barmaqla jestlərdən istifadə edir (sürüşdürmə, iki dəfə toxunma). TalkBack — oxşar jestlərlə Android üçün Google analoqu. VoiceOver accessibilityLabel oxuyur, TalkBack — contentDescription. Hər ikisi Brayl displeyləri və səs idarəetməsini dəstəkləyir. Funksionallıqda prinsipial fərqlər yoxdur.

Android-də contentDescription nədir?

contentDescription — Android-də View atributu, TalkBack üçün mətn təsvirini təyin edir. Onsuz TalkBack «işarələnməyib» deyə bildirir və ya sinif adını oxuyur (ImageView, Button). XML-də android:contentDescription="@string/desc" və ya kodda view.contentDescription = "mətn" vasitəsilə əlavə edilir. Dekorativ şəkillər üçün contentDescription=@null istifadə edin.

Accessibility üçün minimal kontrast nədir?

WCAG 2.1 səviyyə AA-ya görə: adi mətn üçün 4.5:1 və böyük mətn üçün 3:1 (18pt və ya 14pt bold-dan). Səviyyə AAA: adi üçün 7:1 və böyük üçün 4.5:1. Kontrastı iki mövzuda (açıq/tünd) yoxlayın. Google məlumatına görə, kontrast pozuntusu mobil tətbiqlərdə əlçatanlığın ən çox yayılmış problemidir.

iOS-da Dynamic Type dəstəklənməlidirmi?

Bəli, Apple Dynamic Type-ı bütün tətbiqlər üçün tövsiyə edir. İstifadəçi mətn ölçüsünü Parametrlərdə təyin edir. Developer UIFontMetrics.scaledFont istifadə edir — şrift avtomatik miqyaslanır. Dynamic Type olmadan zəif görən istifadəçilər mətni oxuya bilməyəcək. iOS App Store moderasiyası zamanı Dynamic Type-ı avtomatik yoxlayır.

WCAG nədir?

WCAG (Web Content Accessibility Guidelines) — W3C-dən beynəlxalq məzmun əlçatanlığı standartı. 2.1 versiyası (2018) mobil tətbiqlər üçün meyarlar daxildir: kontrast, toxunma sahələrinin ölçüsü (44×44pt), ekran oxuyucularının dəstəyi, jestlərə alternativlər, altyazılar. AA səviyyəsi — App Store və Google Play-də nəşr üçün minimal standart.

Nəticə

  • Accessibility — 1,3 milyard əlilliyi olan insan üçün tətbiq əlçatanlığı (ÜST, 2023)
  • VoiceOver (iOS) və TalkBack (Android) — kor istifadəçilər üçün ekran oxuyucuları
  • UIAccessibility — accessibility elementlərinə label, hint, traits təyin etmək üçün iOS protokolu
  • contentDescription — TalkBack üçün elementləri təsvir etmək üçün Android atributu
  • WCAG 2.1 — kontrast 4.5:1, toxunma sahələri 44×44pt, Dynamic Type dəstəyi
  • Dynamic Type — UIFontMetrics.scaledFont vasitəsilə iOS-da mətn miqyaslanması
  • Test — Accessibility Inspector (iOS), Accessibility Scanner (Android), Espresso Checks

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun