Maxsus imkoniyatlar


ULASHISH

Maxsus imkoniyatlar (accessibility)

Hamma uchun qulay tajribani ta’minlash maqsadida boshqaruv elementlariga yorliqlar bering, Dynamic Type va kontrastni qo‘llab-quvvatlang hamda VoiceOver bilan sinab ko‘ring.


VoiceOver va yorliqlar

Barcha interaktiv elementlar yordamchi texnologiyalar tomonidan idrok etilishi shart.

Mazmunli yorliqlar va maslahatlar taqdim eting.

Misol

import SwiftUI

struct ContentView: View {
  @State private var count = 0
  var body: some View {
    VStack(spacing: 12) {
      Text("Count: \(count)")
        .accessibilityLabel("Current count")
        .accessibilityValue("\(count)")
      Button("Increment") { count += 1 }
        .accessibilityHint("Increases the count by one")
    }
    .padding()
  }
}

Ushbu misolda son ham yorliq, ham qiymat orqali idrok etiladi.


Dynamic Type va kontrast

Tizim matn uslublaridan (masalan, .font(.body)) foydalaning va rang kontrastini tekshiring.

Harakatni kamaytirish (reduced motion) va kontrastni oshirish (increased contrast) sozlamalarini hisobga oling.

Maslahat: VoiceOver, Larger Text, Bold Text va turli Appearance (Light/Dark) sozlamalari bilan sinab ko‘ring.

Xcode’dagi Accessibility Inspector’dan foydalaning.


Semantika va xususiyatlar (traits)

Yordamchi texnologiyalar UI’ingizni tushunishi uchun aniq semantika va xususiyatlarni (traits) taqdim eting.

Misol

import SwiftUI

struct PlanBadge: View {
  var body: some View {
    VStack {
      Image(systemName: "star.fill")
        .foregroundStyle(.yellow)
        .accessibilityLabel("Favorite")
        .accessibilityAddTraits(.isImage)
      Text("Premium plan")
    }
    // Read as one element: "Favorite, Premium plan"
    .accessibilityElement(children: .combine)
  }
}

Yuqoridagi misolda rasm tasvir (image), matn esa yorliq (label) sifatida taqdim etiladi.



Fokus, tartib va guruhlash

O‘qish tartibini boshqaring va o‘zaro bog‘liq elementlarni guruhlang.

Misol

import SwiftUI

struct TotalRow: View {
  var total: Double
  var body: some View {
    HStack {
      Text("Total")
        .accessibilitySortPriority(2)
      Text(total, format: .currency(code: Locale.current.currency?.identifier ?? "USD"))
        .accessibilitySortPriority(1)
    }
    // Alternatively, combine for a single announcement
    // .accessibilityElement(children: .combine)
  }
}

Yuqoridagi misolda jami qiymat bitta element sifatida o‘qiladi.


Maxsus amallar

VoiceOver foydalanuvchilariga sozlanadigan (adjustable) va nomlangan amallarni taqdim eting.

Misol

import SwiftUI

struct QuantityStepper: View {
  @State private var qty = 1
  var body: some View {
    Stepper("Quantity: \(qty)", value: $qty)
      .accessibilityValue("\(qty)")
      .accessibilityAdjustableAction { direction in
        switch direction {
        case .increment: qty += 1
        case .decrement: qty = max(0, qty - 1)
        default: break
        }
      }
      .accessibilityAction(named: Text("Reset")) { qty = 1 }
  }
}

Yuqoridagi misolda stepper sozlanadigan amallarga va bitta nomlangan amalga ega.

Testlash uchun nazorat ro‘yxati: yorliq, qiymat, maslahat, xususiyatlar (traits); o‘qish tartibi; sozlanadigan amallar; Dynamic Type; qorong‘i/yorug‘ rejimdagi kontrast va Reduced Motion’ni tekshiring.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!