VoiceOver: bu nima, boshqaruv jestlari va iOS-da imkoniyatlar

Muallif: IT Sectr Nashr etilgan: 2026-05-15 O'qish vaqti: 8 daq

VoiceOver — bu Apple-ning o'rnatilgan ekran o'quvchisi (screen reader) bo'lib, u interfeysning har bir elementini ovozli talaffuz qiladi va qurilmani jestlar bilan boshqarish imkonini beradi. Texnologiya iOS, iPadOS va macOS-ga tizim darajasida o'rnatilgan bo'lib, qo'shimcha dasturiy ta'minot o'rnatishni talab qilmaydi. Apple Accessibility (2025) ma'lumotlariga ko'ra, VoiceOver 40 dan ortiq tilni qo'llab-quvvatlaydi va butun dunyo bo'ylab millionlab ko'zi ojiz va zaif ko'ruvchi foydalanuvchilar tomonidan qo'llaniladi.

Asosiy ma'lumotlar

  • VoiceOver — iOS, iPadOS va macOS-da jestlar va ovoz bilan boshqariladigan o'rnatilgan screen reader
  • VoiceOver Rotori navigatsiya rejimlarini almashtiradi: so'zlar, belgilar, sarlavhalar, havolalar
  • Jestlar teginish (ovozli talaffuz), siljitish (o'tish) va ikki marta teginish (faollashtirish) ni o'z ichiga oladi
  • Dasturchilar imkoniyatni UIAccessibility va Accessibility Label orqali sozlaydi
  • VoiceOver dinamik matn va Brayl displeylari bilan integratsiyalanadi

VoiceOver nima?

VoiceOver — bu Apple operatsion tizimlariga o'rnatilgan ekran o'quvchisi (screen reader). U ko'zi ojiz va zaif ko'ruvchi foydalanuvchilar uchun mo'ljallangan bo'lib, vizual aloqasiz qurilma bilan to'liq o'zaro aloqani ta'minlaydi. VoiceOver interfeysning barcha elementlarini ovozli talaffuz qiladi: tugmalar, havolalar, matn, rasmlar, bildirishnomalar va tizim elementlari.

Texnologiya birinchi marta 2005-yilda macOS uchun taqdim etilgan va iOS-da 2009-yilda iPhone 3GS bilan paydo bo'lgan. O'shandan beri VoiceOver Apple ekotizimining ajralmas qismiga va platforma imkoniyatining asosiy dalillaridan biriga aylandi. VoiceOver tizim darajasida o'rnatilgan — ya'ni dasturchi tomonidan qo'shimcha integratsiyasiz har qanday ilovada ishlaydi, garchi ovozli talaffuz sifati to'g'ridan-to'g'ri ilovaning iOS imkoniyat API-sidan qanchalik yaxshi foydalanishiga bog'liq.

VoiceOver tabiiy nutq sintezi bilan 40 dan ortiq tilni qo'llab-quvvatlaydi va mintaqaviy ovoz sozlamalariga moslashadi. iOS-da VoiceOver o'zbek va boshqa tillar uchun Siri ovoz mexanizmlaridan foydalanadi, bu esa tinish belgilari va kontekstga qarab maksimal darajada tabiiy ovoz va to'g'ri intonatsiyani ta'minlaydi.

VoiceOver qanday ishlaydi?

VoiceOver teginish hodisalarini ushlaydi va ularni standart iOS kiritishidan farqli ravishda talqin qiladi. Foydalanuvchi ekranga teginsa, VoiceOver barmoq ostidagi elementni faollashtirmaydi, avval uni ovozli talaffuz qiladi. Faqat ikki marta teginishdan so'ng element faollashadi. Bu ko'zi ojiz foydalanuvchilarga tasodifiy bosish xavfisiz interfeysni o'rganish imkonini beradigan asosiy farqdir.

O'qish tartibi va navigatsiya

VoiceOver interfeys elementlarini mantiqiy tartibda o'qiydi: chapdan o'ngga, yuqoridan pastga. O'qish tartibi iOS ko'rinish ierarxiyasidan meros bo'lib o'tadi, ammo dasturchi murakkab layoutlar uchun accessibilityElements xususiyati orqali uni o'zgartirishi mumkin. Foydalanuvchi elementlar orasida o'ngga (keyingi) va chapga (oldingi) siljitish, shuningdek ma'lum bir elementga teginish orqali uni ovozli talaffuz qilishi mumkin.

Har bir harakatda VoiceOver element turini (tugma, havola, sarlavha), uning nomini (accessibilityLabel), holatini (tanlangan, o'chirilgan) va maslahatni (accessibilityHint) aytadi. Agar element qiymatni o'z ichiga olsa — masalan, ovoz balandligi slayderi — VoiceOver uni ham ovozli talaffuz qiladi. Accessibility Traits (UIAccessibilityTraits) qo'shimcha ravishda foydalanuvchiga elementning xatti-harakati haqida ma'lumot beradi: tugma, kalit, qidiruv yoki klaviatura tugmasi ekanligini bildiradi.

VoiceOver Rotori

Rotor — bu VoiceOver navigatsiya rejimini o'zgartiruvchi virtual sozlash dastasidir. Foydalanuvchi rotorni ikki barmoq bilan (ovoz balandligi dastasi kabi) aylantiradi va rejimni tanlaydi: so'zlar, belgilar, sarlavhalar, havolalar, kirish nuqtalari, jadval qatorlari va boshqalar. Sarlavha rejimi veb-sahifalar va ilovalarda H1-H6 o'rtasida tez almashish imkonini beradi, belgi rejimi esa matnni harfma-harf talaffuz qiladi — bu formlarni to'ldirish yoki tasdiqlash kodlarini kiritishda foydalidir.

Dasturchi UIAccessibilityCustomRotor API orqali rotorga o'z rejimlarini qo'shishi mumkin. Masalan, eslatma ilovasida „Sevimli eslatmalar" yoki „So'nggi o'zgarishlar" rotori qo'shilishi mumkin. Maxsus rotorlar muayyan ilovalarda navigatsiyani sezilarli darajada tezlashtiradi va iOS-da imkoniyatning eng yaxshi amaliyoti hisoblanadi.

VoiceOver boshqaruv jestlari

VoiceOver standart iOS jestlari bilan mos kelmaydigan o'z jestlar to'plamidan foydalanadi. Aksariyat jestlar bir barmoq o'rniga uch barmoq bilan bajariladi — bu oddiy boshqaruv bilan ziddiyatlarning oldini oladi va VoiceOver-ga standart kiritish bilan bir vaqtda ishlash imkonini beradi.

HarakatJestNatija
Elementni ovozli talaffuz qilish1 barmoq bilan teginishElement nomini aytadi
FaollashtirishIkki marta teginishTugma yoki havolani bosish
Keyingi elementO'ngga siljitishKeyingisiga o'tish
Oldingi elementChapga siljitishOldingisiga qaytish
Siljitish3 barmoq siljitishRo'yxat yoki sahifani siljitish
Rotor2 barmoq aylantirishNavigatsiya rejimini o'zgartirish

Ikki marta teginish jesti VoiceOver-da elementlarni faollashtirishning asosiy usulidir. Agar element maxsus harakatni talab qilsa (masalan, tortish), VoiceOver ko'chirish rejimiga kirish uchun „teginish — ikki marta teginish va ushlab turish" ketma-ketligidan foydalanadi. Bu ekranga qaramasdan drag-and-drop kabi murakkab jestlarni bajarish imkonini beradi. VoiceOver shuningdek harakatni bekor qilish uchun „ikki barmoq bilan ikki marta teginish" va ekran pardasini (Screen Curtain) yoqish/o'chirish uchun „uch marta teginish" jestini qo'llab-quvvatlaydi.

Mobil ishlab chiqishda VoiceOver

IOS ilovasi dasturchisi UIAccessibility API orqali VoiceOver bilan o'zaro aloqani sezilarli darajada yaxshilashi mumkin. Asosiy imkoniyat sozlamalari Interface Builder-da (Identity Inspector → Accessibility) qo'shiladi, ammo murakkab interfeyslar uchun kodda dasturiy sozlash talab qilinadi.

Accessibility Label va Traits

accessibilityLabel xususiyati VoiceOver element uchun talaffuz qiladigan matnni belgilaydi. Agar yorliq o'rnatilmagan bo'lsa, VoiceOver tugma matni yoki matn maydoni placeholderidan foydalanadi. Matsiz elementlar (belgilar, maxsus ko'rinishlar) uchun yorliq majburiydir. accessibilityTraits xususiyati element turini aniqlaydi: tugma, sarlavha, kalit, qidiruv, klaviatura tugmasi, o'zgaruvchi qiymat, havola va boshqalar.

swift
let profileButton = UIButton(type: .custom)
profileButton.setImage(UIImage(named: "avatar"), for: .normal)
profileButton.isAccessibilityElement = true
profileButton.accessibilityLabel = "Foydalanuvchi profili"
profileButton.accessibilityTraits = .button
profileButton.accessibilityHint = "Profil sozlamalari ekranini ochadi"

isAccessibilityElement bayrog'i maxsus ko'rinishlar uchun VoiceOver qo'llab-quvvatlashini faollashtiradi — standart bo'yicha faqat asosiy elementlar (UIButton, UILabel, UITextField) uchun true hisoblanadi. accessibilityHint parametri maslahat qo'shadi: foydalanuvchi elementda to'xtab qolsa, VoiceOver uni pauzadan so'ng aytadi. Hint harakat natijasini tasvirlashi kerak, ko'rsatmani emas: „Sozlamalar ekranini ochadi" „Ochish uchun bosing" o'rniga.

Elementlarni guruhlash va tartib

Elementlarning mantiqiy guruhi vizual tartibga mos kelmaydigan murakkab ekranlar uchun accessibilityElements ishlatiladi — o'qish tartibini belgilaydigan massiv. Masalan, mahsulot kartasida rasm, nom, narx va „Savatga" tugmasi mavjud. Agar bu elementlar ko'rinish ierarxiyasida tartibsiz joylashgan bo'lsa, accessibilityElements VoiceOver uchun to'g'ri tartibni o'rnatadi.

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

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

Bir nechta elementlarni bitta imkoniyatli elementda birlashtirish uchun UIAccessibilityContainer yoki teginish maydonini bekor qilish uchun accessibilityFrame ishlatiladi. Bu jadval katagi bir nechta UI komponentlarini o'z ichiga olgan, ammo mantiqan bitta elementni ifodalaganda foydalidir — VoiceOver butun katakni bir butun sifatida ovozli talaffuz qilishi kerak, uning mazmunini alohida ko'rib chiqmasligi kerak.

VoiceOver uchun imkoniyat sozlamalari

VoiceOver uchun to'g'ri imkoniyat sozlamalari bir necha jihatga e'tibor talab qiladi: semantik belgilash, dinamik yangilanishlar, maxsus elementlarni qayta ishlash va real screen reader bilan sinov.

SwiftUI-da semantik belgilash

SwiftUI-da imkoniyat .accessibilityLabel(), .accessibilityValue(), .accessibilityHint() va .accessibilityAddTraits() modifikatorlari orqali sozlanadi. SwiftUI avtomatik ravishda standart elementlardan imkoniyatni meros qilib oladi, ammo maxsus komponentlar uchun aniq sozlash talab qilinadi. Masalan, maxsus slayder VoiceOver-ga o'z qiymati va o'zgarish formati haqida xabar berishi kerak.

swift
Slider(value: $volume, in: 0...100)
    .accessibilityLabel("Ovoz balandligi")
    .accessibilityValue(
        Text("\(Int(volume)) foiz")
    )
    .accessibilityAddTraits(.adjustsAudioForAccessibility)
    .accessibilityAdjustableAction { direction in
        switch direction {
        case .increment: volume = min(volume + 5, 100)
        case .decrement: volume = max(volume - 5, 0)
        }
    }

accessibilityAdjustableAction modifikatori VoiceOver jestlari bilan qiymatni o'zgartirish imkoniyatini qo'shadi: yuqoriga siljitish — oshirish, pastga siljitish — kamaytirish. Bu modifikatorsiz slayder screen reader orqali boshqarish uchun imkoniyatsiz qoladi. Shunga o'xshash sozlash maxsus stepperlar, pickerlar va qiymatini o'zgartiruvchi boshqa elementlar uchun talab qilinadi.

Dinamik yangilanishlar va bildirishnomalar

Ekrandagi tarkib dinamik ravishda o'zgarganda (bildirishnoma paydo bo'ldi, yuklash holati yangilandi, narx o'zgardi), VoiceOver UIAccessibility.post orqali bildirishnoma olishi kerak. Bu chaqiruvsiz screen reader o'zgarishlardan xabar topmaydi va foydalanuvchi muhim ma'lumotni o'tkazib yuboradi. SwiftUI uchun .accessibilityAnnouncement() modifikatori ishlatiladi.

swift
UIAccessibility.post(
    notification: .announcement,
    argument: "Narx 20 foizga pasaytirildi"
)

// SwiftUI
Text("Narx yangilandi")
    .accessibilityAnnouncement(Text("20% chegirma"))

VoiceOver bildirishnomalaridan oqilona foydalanish kerak: haddan tashqari e'lonlar foydalanuvchini bezovta qiladi, ularning yo'qligi esa ilovani imkoniyatsiz qiladi. Optimal strategiya — faqat foydalanuvchining joriy ish oqimiga ta'sir qiluvchi o'zgarishlarni e'lon qilish: savat yangilanishi, yuklash holati, formani tekshirish xatosi, chat bildirishnomasi. Fon o'zgarishlari (paneldagi vaqt, valyuta kursi) e'lon qilishni talab qilmaydi — foydalanuvchi kerak bo'lganda o'zi tekshiradi.

VoiceOver sinovi screen reader yoqilgan jismoniy qurilma yoki Accessibility Inspector opsiyasi bilan iOS simulyatori orqali amalga oshiriladi. To'liq foydalanish stsenariylarini tekshirish muhim: vizual nazoratsiz ro'yxatdan o'tish, buyurtma berish, qidiruv orqali mahsulotni topish. Agar marshrut vizual teskari aloqasiz o'tilsa — VoiceOver to'g'ri sozlangan.

Tez-tez so'raladigan savollar

iPhone-da VoiceOver-ni qanday yoqish mumkin?

Sozlamalar → Universal kirish → VoiceOver. Kalitni yoqing. Tez yoqish uchun yon tugmani (iPhone X va undan yangilarida) yoki Home tugmasini uch marta bosish ishlatiladi. Siri ham „VoiceOver-ni yoq" buyrug'i bilan VoiceOver-ni yoqishi mumkin.

VoiceOver TalkBack-dan qanday farq qiladi?

VoiceOver — Apple-ning iOS uchun ekran o'quvchisi, TalkBack — Google-ning Android uchun ekran o'quvchisi. Ishlash printsipi bir xil: teginish ovozli talaffuz qiladi, ikki marta teginish faollashtiradi. Farq jestlar, rotor sozlamalari va ekotizim integratsiyalarida: VoiceOver iCloud va Apple Pay bilan chuqurroq integratsiyalangan.

O'z ilovam uchun VoiceOver-ni qanday sozlash mumkin?

UIAccessibility API-dan foydalaning: barcha elementlar uchun accessibilityLabel, element turi uchun accessibilityTraits va maslahatlar uchun accessibilityHint o'rnating. SwiftUI-da .accessibilityLabel() va .accessibilityAddTraits() modifikatorlarini qo'llang. Ilovani VoiceOver yoqilgan holda sinab ko'ring.

VoiceOver-da rotor nima?

Rotor — ikki barmoq aylantirish bilan o'zgartiriladigan navigatsiya rejimi. Elementlar orasida qanday harakat qilishni belgilaydi: sarlavhalar, belgilar, so'zlar, havolalar yoki kirish nuqtalari bo'yicha. Dasturchilar UIAccessibilityCustomRotor orqali o'z rejimlarini qo'shishlari mumkin.

Nega VoiceOver mening maxsus elementimni o'qimaydi?

Maxsus UIView-lar uchun isAccessibilityElement = true o'rnatish va accessibilityLabel berish kerak. Agar element bir nechta bolali ko'rinishlardan iborat bo'lsa, o'qish tartibini belgilash uchun accessibilityElements ishlating yoki ularni konteynerda birlashtiring.

Xulosa

  • VoiceOver — iOS, iPadOS va macOS uchun ovozli jest boshqaruvi bilan o'rnatilgan Apple screen reader
  • Rotor navigatsiya rejimlarini almashtiradi: sarlavhalar, belgilar, so'zlar, havolalar va maxsus rejimlar
  • Jestlar VoiceOver: teginish — ovozli talaffuz, ikki marta teginish — faollashtirish, siljitish — navigatsiya
  • Ishlab chiqish UIAccessibility API orqali: label, traits, hint, maxsus rotor va dinamik bildirishnomalar
  • SwiftUI .accessibilityLabel(), .accessibilityAddTraits() va .accessibilityAdjustableAction() modifikatorlarini taqdim etadi
  • Dinamik yangilanishlar VoiceOver-ni xabardor qilish uchun UIAccessibility.post chaqiruvini talab qiladi
  • Sinov majburiy ravishda real qurilmada VoiceOver yoqilgan va vizual nazoratsiz o'tkazilishi kerak

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing