- Published on
VoiceOver qo'llab-quvvatlash
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
VoiceOver Apple ning ko'r va kam ko'ruvchi foydalanuvchilar uchun ekran o'quvchisi. Yoqilganda foydalanuvchilar slayd qilish va bosish orqali harakatlanadi β tizim ekrandagi hamma narsani ovoz chiqarib o'qiydi.
SwiftUI matn yorliqi bo'lgan Button uchun avtomatik VoiceOver qo'llab-quvvatlash beradi. Lekin avtomatik qo'llab-quvvatlashning chegaralari bor β bir necha daqiqalik ataylab ish ilovangizni hamma uchun foydalanish imkoniyatli qiladi.
import SwiftUI
struct FoydalanishImkoniyatliKartaKorinishi: View {
var body: some View {
VStack(alignment: .leading, spacing: 12) {
// Dekorativ rasm β VoiceOver dan yashirilgan
Image(systemName: "photo")
.accessibilityHidden(true)
// VoiceOver foydalanuvchan nom sifatida o'qiydigan yorliq
Text("Maqola sarlavhasi")
.font(.headline)
.accessibilityLabel("Maqola: SwiftUI Animatsiyalari")
// Faollashtirilganda nima bo'lishini tushuntiruvchi maslahat
Button("O'qish") { }
.accessibilityLabel("Maqolani o'qish")
.accessibilityHint("To'liq maqolani yangi ekranda ochadi")
// Qiymat β progress, slider va sanagichlar uchun foydali
ProgressView(value: 0.6)
.accessibilityLabel("O'qish jarayoni")
.accessibilityValue("60 foiz")
// Ko'p elementni bitta VoiceOver o'qiladigan guruhga birlashtirish
HStack {
Image(systemName: "heart.fill").accessibilityHidden(true)
Text("128 ta yoqish")
}
.accessibilityElement(children: .combine)
}
.padding()
}
}
| Qator | Vazifasi |
|---|---|
.accessibilityHidden(true) | Elementni VoiceOver dan to'liq yashiradi. Dekorativ rasmlar, ajratuvchilar va ma'nosiz vizual elementlar uchun. |
.accessibilityLabel("...") | VoiceOver o'qiydigan nom. Ikonka tugmalar uchun juda muhim β usiz VoiceOver foydali narsa aytmaydi. |
.accessibilityHint("...") | Yorliqdan keyin o'qiladigan qo'shimcha kontekst. Element faollashtirilganda nima bo'lishini tushuntiradi. |
.accessibilityValue("...") | Joriy qiymatni bildiradi β progress ko'rsatkichlari, slayderlar va sanagichlar uchun foydali. |
.accessibilityElement(children: .combine) | Barcha child elementlarni bitta VoiceOver o'qiladigan birlikka birlashtiradi. |
.accessibilityAddTraits
// VoiceOver ga element turi haqida xabar berish
Text("Bugungi vazifalar")
.font(.title2)
// Sarlavha kabi e'lon qilish β VoiceOver foydalanuvchilar sarlavhalar bo'yicha navigatsiya qila oladi
.accessibilityAddTraits(.isHeader)
// Tap gesture li rasm β button trait kerak
Image(systemName: "star")
.onTapGesture { /* sevimli */ }
.accessibilityAddTraits(.isButton)
.accessibilityLabel("Sevimlilarga qo'shish")
// Usiz VoiceOver "rasm" deydi β foydalanuvchi interaktiv ekanligini bilmaydi
Murakkab UI dan maxsus element
// Murakkab joylashuvni bitta maxsus VoiceOver elementi bilan almashtirish
HStack {
Image(systemName: "cart.fill").accessibilityHidden(true)
VStack(alignment: .leading) {
Text("Mahsulot nomi").accessibilityHidden(true)
Text("99,000 so'm").accessibilityHidden(true)
}
}
// Barcha ichki elementlarni e'tiborsiz qoldirib maxsus e'lon
.accessibilityElement(children: .ignore)
.accessibilityLabel("Mahsulot nomi, 99 ming so'm")
.accessibilityHint("Savatga qo'shish uchun ikki marta bosing")
Tezkor ma'lumotnoma
| Sintaksis | Vazifasi |
|---|---|
.accessibilityLabel("...") | VoiceOver o'qiydigan nom |
.accessibilityHint("...") | Nima bo'lishini tushuntiruvchi maslahat |
.accessibilityValue("...") | Joriy qiymat (progress, sanagich) |
.accessibilityHidden(true) | VoiceOver dan yashirish |
.accessibilityElement(children: .combine) | Childlarni birlashtirib o'qish |
.accessibilityAddTraits(.isHeader) | Sarlavha sifatida belgilash |
.accessibilityAddTraits(.isButton) | Tugma sifatida belgilash |
π― Topshiriq: VoiceOver sinovdan o'tkazish
Ilovangizda ikonka-only tugmalarni toping (o'chirish, ulashish, yopish). Har biriga .accessibilityLabel qo'shing. Dekorativ rasmlarga .accessibilityHidden(true) qo'shing. iPhone da VoiceOver ni yoqing va ilovangizni navigatsiya qiling β hamma narsa mantiqiy va foydali eshitiladimi?