VoiceOver: iOS-da bu nədir, idarəetmə jestləri və imkanlar

Müəllif: IT Sectr Dərc olunub: 2026-05-15 Oxuma vaxtı: 8 dəq

VoiceOver — Apple tərəfindən hazırlanmış daxili ekran oxuyucusudur (screen reader). O, interfeysin hər bir elementini səsləndirir və cihazı jestlərlə idarə etməyə imkan verir. Texnologiya iOS, iPadOS və macOS-a sistem səviyyəsində daxildir və əlavə proqram təminatının quraşdırılmasını tələb etmir. Apple Accessibility (2025) məlumatlarına görə, VoiceOver 40-dan çox dili dəstəkləyir və dünya üzrə milyonlarla kor və zəif görən istifadəçi tərəfindən istifadə olunur.

Əsas məqamlar

  • VoiceOver — iOS, iPadOS və macOS-da jestlər və səslə idarə olunan daxili screen reader
  • VoiceOver Rotoru naviqasiya rejimlərini dəyişir: sözlər, simvollar, başlıqlar, keçidlər
  • Jestlər toxunma (səsləndirmə), sürüşdürmə (keçid) və iki dəfə toxunma (aktivləşdirmə) daxildir
  • Tərtibatçılar əlçatanlığı UIAccessibility və Accessibility Label vasitəsilə konfiqurasiya edir
  • VoiceOver dinamik mətn və Brayl diskləri ilə inteqrasiya olunur

VoiceOver nədir?

VoiceOver — Apple əməliyyat sistemlərinə daxil edilmiş ekran oxuyucusudur (screen reader). O, kor və zəif görən istifadəçilər üçün nəzərdə tutulub və vizual təmas olmadan cihazla tam qarşılıqlı əlaqəni təmin edir. VoiceOver interfeysin bütün elementlərini səsləndirir: düymələr, keçidlər, mətn, şəkillər, bildirişlər və sistem elementləri.

Texnologiya ilk dəfə 2005-ci ildə macOS üçün təqdim edilib, iOS-da isə 2009-cu ildə iPhone 3GS ilə birlikdə ortaya çıxıb. O vaxtdan bəri VoiceOver Apple ekosisteminin ayrılmaz hissəsinə və platformanın əlçatanlığının lehinə əsas arqumentlərdən birinə çevrilib. VoiceOver sistem səviyyəsində daxildir — yəni tərtibatçı tərəfindən əlavə inteqrasiya tələb olunmadan istənilən tətbiqdə işləyir, baxmayaraq ki, səsləndirmənin keyfiyyəti birbaşa tətbiqin iOS əlçatanlıq API-sindən nə dərəcədə yaxşı istifadə etməsindən asılıdır.

VoiceOver təbii nitq sintezi ilə 40-dan çox dili dəstəkləyir və regional səs parametrlərinə uyğunlaşır. iOS-da VoiceOver Azəri dili də daxil olmaqla müxtəlif dillər üçün Siri səs mühərriklərindən istifadə edir ki, bu da durğu işarələrindən və kontekstdən asılı olaraq maksimum təbii səslənmə və düzgün intonasiya təmin edir.

VoiceOver necə işləyir?

VoiceOver toxunma hadisələrini ələ keçirir və onları standart iOS daxilindən fərqli şəkildə şərh edir. İstifadəçi ekrana toxunduqda, VoiceOver barmağın altındakı elementi aktivləşdirmir, əvvəlcə onu səsləndirir. Yalnız iki dəfə toxunduqdan sonra element aktivləşir. Bu, kor istifadəçilərə təsadüfi basma riski olmadan interfeysi araşdırmağa imkan verən əsas fərqdir.

Oxuma sırası və naviqasiya

VoiceOver interfeys elementlərini məntiqi ardıcıllıqla oxuyur: soldan sağa, yuxarıdan aşağıya. Oxuma sırası iOS görüntü iyerarxiyasından miras alınır, lakin tərtibatçı mürəkkəb layoutlar üçün accessibilityElements xüsusiyyəti vasitəsilə onu dəyişə bilər. İstifadəçi elementlər arasında sağa (növbəti) və sola (əvvəlki) sürüşdürməklə, həmçinin konkret elementə toxunmaqla onu səsləndirə bilər.

Hərəkət edərkən VoiceOver elementin növünü (düymə, keçid, başlıq), onun adını (accessibilityLabel), vəziyyətini (seçilib, söndürülüb) və ipucunu (accessibilityHint) bildirir. Element dəyər ehtiva edirsə — məsələn, səs səviyyəsi sürgüsü — VoiceOver onu da səsləndirir. Accessibility Traits (UIAccessibilityTraits) əlavə olaraq istifadəçiyə elementin davranışı barədə məlumat verir: düymə, keçid, axtarış və ya klaviatura düyməsi olub-olmadığını bildirir.

VoiceOver Rotoru

Rotor — VoiceOver naviqasiya rejimini dəyişən virtual tənzimləmə düyməsidir. İstifadəçi rotoru iki barmaqla (səs səviyyəsi düyməsi kimi) fırladır və rejim seçir: sözlər, simvollar, başlıqlar, keçidlər, giriş nöqtələri, cədvəl sətirləri və digərləri. Başlıq rejimi veb-səhifələrdə və tətbiqlərdə H1-H6 arasında sürətli keçid etməyə imkan verir, simvol rejimi isə mətni hərf-hərf tələffüz edir — bu, formaları doldurarkən və ya təsdiq kodlarını daxil edərkən faydalıdır.

Tərtibatçı UIAccessibilityCustomRotor API vasitəsilə rotora öz rejimlərini əlavə edə bilər. Məsələn, qeyd tətbiqində „Sevimli qeydlər" və ya „Son dəyişikliklər" rotoru əlavə etmək olar. Fərdi rotorlar spesifik tətbiqlərdə naviqasiyanı əhəmiyyətli dərəcədə sürətləndirir və iOS-da əlçatanlıq üçün ən yaxşı təcrübə hesab olunur.

VoiceOver idarəetmə jestləri

VoiceOver standart iOS jestləri ilə üst-üstə düşməyən öz jest dəstindən istifadə edir. Jestlərin əksəriyyəti bir barmaq əvəzinə üç barmaqla yerinə yetirilir — bu, adi idarəetmə ilə münaqişələrin qarşısını alır və VoiceOver-ə standart daxiletmə ilə eyni vaxtda işləməyə imkan verir.

ƏməliyyatJestNəticə
Elementi səsləndir1 barmaqla toxunmaElementin adını deyir
Aktivləşdirİki dəfə toxunmaDüymə və ya keçidi basmaq
Növbəti elementSağa sürüşdürməNövbətiyə keçid
Əvvəlki elementSola sürüşdürməƏvvəlkiyə qayıtma
Sürüşdürmə3 barmaq sürüşdürməSiyahı və ya səhifəni sürüşdürmək
Rotor2 barmaq fırlatmaNaviqasiya rejimini dəyişmək

İki dəfə toxunma jesti VoiceOver-də elementləri aktivləşdirməyin əsas üsuludur. Element xüsusi hərəkət tələb edirsə (məsələn, sürükləmə), VoiceOver daşıma rejiminə girmək üçün „toxunma — iki dəfə toxunma və saxla" ardıcıllığından istifadə edir. Bu, ekrana baxmadan drag-and-drop kimi mürəkkəb jestləri yerinə yetirməyə imkan verir. VoiceOver həmçinin əməliyyatı ləğv etmək üçün „iki barmaqla iki dəfə toxunma" və ekran pərdəsini (Screen Curtain) açmaq/bağlamaq üçün „üç dəfə toxunma" jestini də dəstəkləyir.

Mobil inkişafda VoiceOver

iOS tətbiqi tərtibatçısı UIAccessibility API vasitəsilə VoiceOver ilə qarşılıqlı əlaqəni əhəmiyyətli dərəcədə yaxşılaşdıra bilər. Əsas əlçatanlıq parametrləri Interface Builder-də (Identity Inspector → Accessibility) əlavə olunur, lakin mürəkkəb interfeyslər üçün kodda proqram konfiqurasiyası tələb olunur.

Accessibility Label və Traits

accessibilityLabel xüsusiyyəti VoiceOver-in element üçün səsləndirəcəyi mətni təyin edir. Label təyin edilməyibsə, VoiceOver düymənin mətnindən və ya mətn sahəsinin placeholderindən istifadə edir. Mətnsiz elementlər (nişanlar, fərdi view-lər) üçün label məcburidir. accessibilityTraits xüsusiyyəti elementin növünü müəyyən edir: düymə, başlıq, keçid, axtarış, klaviatura düyməsi, dəyəri dəyişən, keçid və digərləri.

swift
let profileButton = UIButton(type: .custom)
profileButton.setImage(UIImage(named: "avatar"), for: .normal)
profileButton.isAccessibilityElement = true
profileButton.accessibilityLabel = "İstifadəçi profili"
profileButton.accessibilityTraits = .button
profileButton.accessibilityHint = "Profil parametrləri ekranını açır"

isAccessibilityElement bayrağı fərdi view-lər üçün VoiceOver dəstəyini aktivləşdirir — standart olaraq yalnız əsas elementlər (UIButton, UILabel, UITextField) üçün true-dir. accessibilityHint parametri ipucu əlavə edir: istifadəçi elementdə dayandıqda VoiceOver onu fasilədən sonra səsləndirir. Hint hərəkətin nəticəsini təsvir etməlidir, təlimatı deyil: „Parametrlər ekranını açır" „Açmaq üçün basın" əvəzinə.

Elementlərin qruplaşdırılması və sırası

Elementlərin məntiqi qrupunun vizual sıraya uyğun gəlmədiyi mürəkkəb ekranlar üçün accessibilityElements istifadə olunur — oxuma sırasını təyin edən massiv. Məsələn, məhsul kartında şəkil, ad, qiymət və „Səbətə" düyməsi var. Bu elementlər view iyerarxiyasında xaotik yerləşibsə, accessibilityElements VoiceOver üçün düzgün sıranı təyin edir.

swift
let productCard = UIView()
let productImage = UIImageView()
let productName = UILabel()
let productPrice = UILabel()
let addToCartButton = UIButton()

productCard.accessibilityElements = [
    productImage, productName, productPrice, addToCartButton
]

Bir neçə elementi bir əlçatan elementdə birləşdirmək üçün UIAccessibilityContainer və ya toxunma sahəsini ləğv etmək üçün accessibilityFrame istifadə olunur. Bu, cədvəl xanası bir neçə UI komponenti ehtiva etdikdə, lakin məntiqi olaraq bir elementi təmsil etdikdə faydalıdır — VoiceOver bütün xananı bütövlükdə səsləndirməlidir, onun məzmununu ayrı-ayrılıqda sadalamamalıdır.

VoiceOver üçün əlçatanlıq parametrləri

VoiceOver üçün düzgün əlçatanlıq konfiqurasiyası bir neçə aspektə diqqət tələb edir: semantik işarələmə, dinamik yeniləmələr, fərdi elementlərin işlənməsi və real screen reader ilə sınaq.

SwiftUI-də semantik işarələmə

SwiftUI-də əlçatanlıq .accessibilityLabel(), .accessibilityValue(), .accessibilityHint() və .accessibilityAddTraits() modifier-ləri vasitəsilə konfiqurasiya olunur. SwiftUI avtomatik olaraq standart elementlərdən əlçatanlığı miras alır, lakin fərdi komponentlər üçün açıq konfiqurasiya tələb olunur. Məsələn, fərdi sürgü VoiceOver-ə öz dəyəri və dəyişmə formatı barədə məlumat verməlidir.

swift
Slider(value: $volume, in: 0...100)
    .accessibilityLabel("Səs səviyyəsi")
    .accessibilityValue(
        Text("\(Int(volume)) faiz")
    )
    .accessibilityAddTraits(.adjustsAudioForAccessibility)
    .accessibilityAdjustableAction { direction in
        switch direction {
        case .increment: volume = min(volume + 5, 100)
        case .decrement: volume = max(volume - 5, 0)
        }
    }

accessibilityAdjustableAction modifier-i VoiceOver jestləri ilə dəyəri dəyişmək imkanı əlavə edir: yuxarı sürüşdürmə — artır, aşağı sürüşdürmə — azaldır. Bu modifier olmadan sürgü screen reader vasitəsilə idarə oluna bilməz. Oxşar konfiqurasiya fərdi stepper-lər, picker-lər və dəyərini dəyişən digər elementlər üçün tələb olunur.

Dinamik yeniləmələr və bildirişlər

Ekrandakı məzmun dinamik olaraq dəyişdikdə (bildiriş gəldi, yükləmə statusu yeniləndi, qiymət dəyişdi), VoiceOver UIAccessibility.post vasitəsilə bildiriş almalıdır. Bu çağırış olmadan screen reader dəyişikliklərdən xəbərdar olmayacaq və istifadəçi vacib məlumatı qaçıracaq. SwiftUI üçün .accessibilityAnnouncement() modifier-i istifadə olunur.

swift
UIAccessibility.post(
    notification: .announcement,
    argument: "Qiymət 20 faiz endirilib"
)

// SwiftUI
Text("Qiymət yeniləndi")
    .accessibilityAnnouncement(Text("20% endirim"))

VoiceOver bildirişlərindən məntiqli istifadə edilməlidir: həddindən artıq elanlar istifadəçini qıcıqlandırır, onların olmaması isə tətbiqi əlçatmaz edir. Optimal strategiya — yalnız istifadəçinin cari iş axınına təsir edən dəyişiklikləri elan etməkdir: səbət yeniləməsi, yükləmə statusu, forma yoxlaması xətası, çat bildirişi. Fon dəyişiklikləri (paneldəki vaxt, valyuta məzənnəsi) elan tələb etmir — istifadəçi lazım olduqda özü yoxlayar.

VoiceOver sınağı screen reader aktivləşdirilmiş fiziki cihaz və ya Accessibility Inspector seçimi ilə iOS simulyatoru vasitəsilə aparılır. Tam istifadə ssenarilərini yoxlamaq vacibdir: vizual nəzarət olmadan qeydiyyatdan keçmək, sifariş vermək, məhsulu axtarışla tapmaq. Marşrut vizual geribildirim olmadan keçilə bilərsə — VoiceOver düzgün konfiqurasiya edilib.

Tez-tez verilən suallar

iPhone-da VoiceOver-i necə yandırmaq olar?

Parametrlər → Universal giriş → VoiceOver. Keçidi yandırın. Sürətli yandırma üçün yan düymənin (iPhone X və daha yenilərində) və ya Ev düyməsinin üç dəfə basılması istifadə olunur. Siri də „VoiceOver-i yandır" əmri ilə VoiceOver-i yandıra bilər.

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

VoiceOver — Apple-in iOS üçün ekran oxuyucusu, TalkBack — Google-ın Android üçün ekran oxuyucusudur. İş prinsipi eynidir: toxunma səsləndirir, iki dəfə toxunma aktivləşdirir. Fərq jestlərdə, rotor parametrlərində və ekosistem inteqrasiyalarındadır: VoiceOver iCloud və Apple Pay ilə daha dərin inteqrasiya olunub.

Öz tətbiqim üçün VoiceOver-i necə konfiqurasiya etmək olar?

UIAccessibility API-dən istifadə edin: bütün elementlər üçün accessibilityLabel, element növü üçün accessibilityTraits və ipucları üçün accessibilityHint təyin edin. SwiftUI-də .accessibilityLabel() və .accessibilityAddTraits() modifier-lərindən istifadə edin. Tətbiqi VoiceOver aktivləşdirilmiş halda sınaqdan keçirin.

VoiceOver-də rotor nədir?

Rotor — iki barmağın fırlanması ilə dəyişdirilən naviqasiya rejimidir. Elementlər arasında hərəkəti müəyyən edir: başlıqlar, simvollar, sözlər, keçidlər və ya giriş nöqtələri üzrə. Tərtibatçılar UIAccessibilityCustomRotor vasitəsilə öz rejimlərini əlavə edə bilərlər.

Niyə VoiceOver mənim fərdi elementimi oxumur?

Fərdi UIView-lər üçün isAccessibilityElement = true təyin etməli və accessibilityLabel verməlisiniz. Element bir neçə uşaq view-dən ibarətdirsə, oxuma sırasını təyin etmək üçün accessibilityElements istifadə edin və ya onları konteynerdə birləşdirin.

Nəticə

  • VoiceOver — iOS, iPadOS və macOS üçün səsli jest idarəsi ilə daxili Apple screen reader
  • Rotor naviqasiya rejimlərini dəyişir: başlıqlar, simvollar, sözlər, keçidlər və fərdi rejimlər
  • Jestlər VoiceOver: toxunma — səsləndirmə, iki dəfə toxunma — aktivləşdirmə, sürüşdürmə — naviqasiya
  • İnkişaf UIAccessibility API vasitəsilə: label, traits, hint, fərdi rotor və dinamik bildirişlər
  • SwiftUI .accessibilityLabel(), .accessibilityAddTraits() və .accessibilityAdjustableAction() modifier-lərini təqdim edir
  • Dinamik yeniləmələr VoiceOver-i xəbərdar etmək üçün UIAccessibility.post çağırışı tələb edir
  • Sınaq məcburi olaraq real cihazda VoiceOver aktiv və vizual nəzarət olmadan aparılmalıdır

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