Pritaikymo neįgaliesiems teksto pritaikymas „Swift“ pagal fokusavimo kryptį

Pritaikymo neįgaliesiems teksto pritaikymas „Swift“ pagal fokusavimo kryptį
Accessibility

Dinaminių vartotojo sąsajos elementų „VoiceOver“ prieinamumo tobulinimas

Kurdami įtraukią iOS programėlę, kūrėjai dažnai susiduria su unikaliais iššūkiais dėl VoiceOver funkcijos. Dažnai kyla klausimas, ar UIView pritaikymo neįgaliesiems tekstas gali būti dinamiškai pritaikytas atsižvelgiant į židinio judėjimo kryptį. 🧭

Įsivaizduokite išdėstymą su Viršutinė etiketė, rinkinio rodinys, veikiantis kaip langelių tinklelis, ir Apatinė etiketė. Kiekvienas rinkinio rodinio langelis yra atskirai pasiekiamas, todėl ekrano skaitytuvo naudotojai gali naudotis patogiau. Tačiau kartais numatytoji pritaikymo neįgaliesiems elgsena nevisiškai atitinka vartotojo poreikius.

Pavyzdžiui, kai vartotojas naršo iš Viršutinės etiketės į pirmąjį rinkinio rodinio langelį, gali būti naudinga pateikti papildomą kontekstą, pvz., „Lentelė su n eilučių ir stulpelių“. Tai padidina aiškumą ir patogumą naudoti, ypač naudojant tinklelius ar sudėtingas duomenų struktūras.

Kita vertus, naršant atvirkštine tvarka nuo Apatinės etiketės iki paskutinio langelio, tinkinus tekstą sąveika gali būti intuityvesnė ir sklandesnė. Pasinerkime į tai, kaip šis dinaminis koregavimas gali būti pasiektas naudojant „Swift“ naudojant realaus pasaulio pavyzdžius. 🚀

komandą Naudojimo pavyzdys
UIAccessibility.elementFocusedNotification Šis pranešimas suaktyvinamas, kai „VoiceOver“ židinys pakeičiamas į naują elementą. Tai būtina norint dinamiškai atnaujinti pritaikymo neįgaliesiems etiketes atsižvelgiant į fokusavimo kryptį.
UIAccessibility.focusedElementUserInfoKey Naudojamas norint išskirti šiuo metu suaktyvintą elementą iš pranešimo vartotojo informacijos žodyno, kad būtų galima identifikuoti konkretų fokusuotą UIView.
didUpdateFocusIn UICollectionViewDelegate delegavimo metodas, iškviečiamas kaskart, kai rinkinio rodinyje pasikeičia židinys. Tai naudinga įgyvendinant dinamišką elgesį, pvz., atnaujinant etiketes pagal fokusavimo kryptį.
UIFocusAnimationCoordinator Šis objektas leidžia sklandžiai animuoti, kai pasikeičia židinys, pagerinant naudotojo patirtį, kai pasiekiamumo elementai atnaujinami dinamiškai.
customAccessibilityLabel Tinkinta nuosavybė, pridėta prie UICollectionViewCell poklasio, skirta saugoti ir tvarkyti dinamines pritaikymo neįgaliesiems etiketes pagal fokusavimo kryptį.
context.nextFocusedView Teikia UIView, kuris netrukus bus sufokusuotas, o tai labai svarbu norint nustatyti ir pritaikyti tinkamą šio elemento pritaikymo neįgaliesiems etiketę.
context.previouslyFocusedView Nurodo UIView, kuris anksčiau buvo sufokusuotas, todėl galima priimti kontekstą atitinkančius sprendimus, pvz., pridėti papildomo konteksto perjungiant fokusą.
NotificationCenter.default.addObserver Užregistruoja stebėtoją, kuris klausytų konkrečių pranešimų, pvz., „VoiceOver“ fokusavimo pasikeitimų, įgalindamas pasirinktinį elgesį, kai tie pranešimai gaunami.
selector Nurodo metodą, kuris turi būti vykdomas gavus pranešimą. Pavyzdžiui, jis leidžia tvarkyti UIAccessibility.elementFocusedNotification pritaikytu būdu.
accessibilityLabel UIAprieinamumo savybė, teikianti elementą aprašantį tekstą. Ši savybė pavyzdyje nepaisoma, kad būtų dinamiškai įtrauktas papildomas kontekstas.

Pritaikymo neįgaliesiems etikečių optimizavimas naudojant dinaminį fokusavimą

Pirmajame scenarijaus pavyzdyje naudojame metodą „didUpdateFocusIn“ iš UICollectionViewDelegate protokolo, kad stebėtume, kada VoiceOver židinys juda tarp elementų. Šis metodas leidžia kūrėjams aptikti ir anksčiau sufokusuotą rodinį, ir kitą, todėl jis puikiai tinka konteksto koregavimui. Patikrinus, ar kitas sufokusuotas rodinys yra UICollectionViewCell, scenarijus dinamiškai atnaujina accessibilityLabel nuosavybę pagal atitinkamą kontekstą. Pavyzdžiui, perkeldami židinį nuo viršutinės etiketės į rinkinio langelį, pridedame tokią informaciją kaip "“, suteikiant papildomo aiškumo naudotojams, kurie pasikliauja pagalbinėmis technologijomis. 🧑‍💻

Antrasis scenarijus apima platesnį požiūrį, naudojant NotificationCenter, klausantis „UIAccessibility.elementFocusedNotification“. Šis pranešimas transliuoja VoiceOver fokusavimo pokyčius visoje programoje. Apdorodamas šį pranešimą, scenarijus dinamiškai nustato, kuris elementas sufokusuotas, ir atitinkamai atnaujina savo prieinamumo etiketę. Šis metodas ypač naudingas, kai keliems sudėtingos vartotojo sąsajos komponentams reikia panašių atnaujinimų. Pavyzdžiui, įsivaizduokite interaktyvių kortelių tinklelį, kuriame kiekviena kortelė keičia savo aprašymą pagal fokusavimo kryptį – tai efektyviai tvarkoma naudojant pranešimus.

Abu metodai yra moduliniai ir pakartotinai naudojami. Pirmasis scenarijus yra glaudžiai integruotas su UICollectionView, todėl jis yra idealus sprendimas vartotojo sąsajoms, kurios labai pagrįstos kolekcijų rodiniais. Kita vertus, pranešimais pagrįstas scenarijus yra lankstesnis ir gerai veikia įvairiuose išdėstymuose, pvz., tinkleliuose kartu su etiketėmis ir mygtukais. Naudojant tinkintas ypatybes, pvz., „customAccessibilityLabel“, užtikrinama, kad pritaikymo neįgaliesiems teksto naujiniai netrukdytų pagrindinėms vartotojo sąsajos elementų funkcijoms. Pavyzdžiui, kelionių programoje, kai dėmesys perkeliamas į kelionės tikslo kortelę, kortelės duomenys gali dinamiškai įtraukti informaciją apie tai, ar ji yra pagrindinių sąrašo ar rekomendacijų dalis, taip praturtindama naudotojo patirtį. ✈️

Pagrindinis šių diegimų tikslas yra užtikrinti, kad prieinamumo etiketė būtų glausta, tačiau aprašomoji. Pridėjus krypties kontekstą, kai keičiamas dėmesys, galima išvengti painiavos sudėtingose ​​sąsajose naršančius vartotojus. Pavyzdžiui, nurodę „Top Label to Cell 1, table“, naudotojai gali suprasti ir savo vietą vartotojo sąsajoje, ir struktūrą, su kuria jie sąveikauja. Šis apgalvotas pritaikymo neįgaliesiems funkcijų integravimas ne tik atitinka WCAG gaires, bet ir sukuria intuityvią, į vartotoją orientuotą patirtį. Abu sprendimai užtikrina, kad pasiekiamumas išliktų pirmos klasės pilietis kuriant iOS programas.

Dinaminis pritaikymo neįgaliesiems tekstas sistemoje „iOS“, pagrįstas fokusavimo kryptimi

Šis sprendimas orientuotas į „Swift“ programavimą, panaudojant UIKit pritaikymo neįgaliesiems funkcijas, kad būtų galima dinamiškai koreguoti vartotojo sąsajos elementų pritaikymo neįgaliesiems etiketę pagal fokusavimo kryptį.

// Approach 1: Using Accessibility Focus Delegates
import UIKit
class AccessibleCollectionViewCell: UICollectionViewCell {
    override var accessibilityLabel: String? {
        get {
            return customAccessibilityLabel
        }
        set {
            customAccessibilityLabel = newValue
        }
    }
    private var customAccessibilityLabel: String?
}
class ViewController: UIViewController, UICollectionViewDelegate {
    @IBOutlet weak var topLabel: UILabel!
    @IBOutlet weak var collectionView: UICollectionView!
    @IBOutlet weak var bottomLabel: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        collectionView.delegate = self
    }
    func collectionView(_ collectionView: UICollectionView,
                        didUpdateFocusIn context: UICollectionViewFocusUpdateContext,
                        with coordinator: UIFocusAnimationCoordinator) {
        if let nextFocusedCell = context.nextFocusedView as? AccessibleCollectionViewCell {
            let direction = context.previouslyFocusedView is UILabel ? "table with n Rows, n Columns" : ""
            nextFocusedCell.accessibilityLabel = "\(nextFocusedCell.customAccessibilityLabel ?? ""), \(direction)"
        }
    }
}

Dinaminis fokusavimo reguliavimas su pranešimų stebėtojais

Šis metodas naudoja „Swift“ pranešimų centrą, kad išklausytų „VoiceOver“ fokusavimo pokyčius ir dinamiškai atnaujintų pritaikymo neįgaliesiems etiketes.

// Approach 2: Using Notification Center
import UIKit
class ViewController: UIViewController {
    @IBOutlet weak var collectionView: UICollectionView!
    private var lastFocusedElement: UIView?
    override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self,
                                               selector: #selector(handleFocusChange),
                                               name: UIAccessibility.elementFocusedNotification,
                                               object: nil)
    }
    @objc private func handleFocusChange(notification: Notification) {
        guard let userInfo = notification.userInfo,
              let focusedElement = userInfo[UIAccessibility.focusedElementUserInfoKey] as? UIView else { return }
        if let cell = focusedElement as? UICollectionViewCell,
           lastFocusedElement is UILabel {
            cell.accessibilityLabel = "\(cell.accessibilityLabel ?? ""), table with n Rows, n Columns"
        }
        lastFocusedElement = focusedElement
    }
}

Dinaminio ir kontekstinio pritaikymo neįgaliesiems patirčių kūrimas

Prieinamumas yra kertinis šiuolaikinių programų kūrimo akmuo, ypač tokiose platformose kaip „iOS“, kur pagalbiniai įrankiai, tokie kaip VoiceOver, atlieka pagrindinį vaidmenį. Niuansuotas, tačiau dažnai nepastebimas aspektas yra galimybė pateikti dinamišką kontekstą, pagrįstą navigacijos fokusavimo kryptimi. Įdiegę logiką, sekančią, ar dėmesys juda iš viršaus į apačią ar atvirkščiai, kūrėjai gali pridėti reikšmingos informacijos prie elementų pritaikymo neįgaliesiems teksto, praturtindami vartotojo patirtį. Pavyzdžiui, tinkleliu pagrįstoje galerijos programoje langeliai gali apibūdinti savo vietą ir kontekstą, kai dėmesys perkeliamas iš antraštės į tinklelį, todėl naudotojai gali suprasti savo vietą struktūroje. 🔍

Kitas svarbus dalykas yra tai, kad šis dinaminis koregavimas neapsiriboja UICollectionView. Jis taip pat gali būti taikomas kitiems elementams, pvz., UITableView, krūvoms arba pasirinktiniams rodiniams. Pavyzdžiui, jei vartotojas naršo kelių sekcijų lentelę, antraštės gali pridėti kontekstą apie po jomis esančias eilutes, kai fokusas patenka į skyrių arba išeina iš jos. Taip užtikrinama, kad naudotojai, naršantys naudojant „VoiceOver“, gali įgyti erdvinį ir hierarchinį sąsajos supratimą be papildomų pastangų, skatinant naudojimą ir atitikimą WCAG standartams. 🎯

Be pagrindinių naudojimo atvejų, ši technika palaiko ir išplėstinius sąveikos modelius. Pavyzdžiui, mokomojoje programoje, kai viktorinos klausimas įgauna dėmesį, jis gali paskelbti išsamią informaciją, pvz., klausimo numerį, bendrą likusių klausimų skaičių ar net užuominas apie temą. Tokios detalės padidina naudotojų, kurie naudojasi pagalbinėmis technologijomis, įsitraukimą ir sumažina pažinimo krūvį. Kūrėjai turi teikti pirmenybę šiems dinaminiams patobulinimams, kad užtikrintų, jog jų programos veiksmingai ir visapusiškai aptarnautų įvairias auditorijas. 🌍

  1. Kaip aptinkate „VoiceOver“ fokusavimo pokyčius?
  2. Galite naudoti klausytis dėmesio pokyčių.
  3. Koks yra geriausias būdas atnaujinti pritaikymo neįgaliesiems etiketes?
  4. Naudojant derinį ir pasirinktines ypatybes, pvz., , yra veiksmingas dinaminiams atnaujinimams.
  5. Ar dinaminės etiketės gali pagerinti nestandartinių vartotojo sąsajos išdėstymų naudojimą?
  6. Taip, pritaikydami tinklelių, lentelių ar tinkintų rodinių aprašus, naudotojai gali geriau suprasti vartotojo sąsajos struktūrą.
  7. Kokie iššūkiai kyla dėl kontekstą suvokiančių etikečių?
  8. Gali būti sudėtinga užtikrinti nuoseklumą tarp fokusavimo perėjimų. Labai svarbu išbandyti įvairius navigacijos scenarijus.
  9. Kaip šiuos metodus galima pakartotinai naudoti įvairiuose projektuose?
  10. Sukurti naudingumo arba bazinės klasės naujinimus, skirtus sutelkti dėmesį, yra veiksmingas sprendimas pakartotiniam naudojimui.

Dinaminis pritaikymo neįgaliesiems tekstas praturtina naršymo patirtį, ypač naudojant sudėtingus išdėstymus, pvz., tinklelius ar rinkinio rodinius. Pridėję kontekstą fokusavimo perėjimams, pvz., paskelbdami eilutes ir stulpelius, vartotojai gali geriau suprasti savo padėtį sąsajoje. Šis požiūris užtikrina įtraukimą ir patogumą naudoti platesnei auditorijai.

Šių metodų taikymas realiose programose, pvz., švietimo platformose ar galerijose, padidina jų funkcionalumą. Prisitaikymas prie vartotojo naršymo modelių atspindi apgalvotą dizainą. Kūrėjai turėtų teikti pirmenybę prieinamumui nuo pat pradžių, užtikrindami, kad būtų laikomasi standartus ir programėles, kurios tenkina įvairius vartotojų poreikius. 🌍

  1. Išsamią dokumentaciją apie UIA prieinamumas , paaiškinančios pritaikymo neįgaliesiems funkcijas UIKit ir jų programas.
  2. Įžvalgos ir pavyzdžiai iš oficialaus Apple vadovo Prieinamumo pritaikymas , su praktiniais patarimais kūrėjams.
  3. Bendruomenės diskusijos apie dinamišką „VoiceOver“ dėmesio valdymą Stack Overflow , įskaitant sprendimus konkretiems naudojimo atvejams.