Pieejamības teksta pielāgošana programmā Swift, pamatojoties uz fokusa virzienu

Pieejamības teksta pielāgošana programmā Swift, pamatojoties uz fokusa virzienu
Accessibility

Uzlabojiet VoiceOver pieejamību dinamiskajiem lietotāja interfeisa elementiem

Veidojot iekļaujošu iOS lietotni, izstrādātāji bieži saskaras ar unikālām problēmām saistībā ar VoiceOver funkcionalitāti. Bieži tiek uzdots jautājums, vai UIView pieejamības tekstu var dinamiski pielāgot, pamatojoties uz fokusa kustības virzienu. 🧭

Iedomājieties izkārtojumu ar Augšējo iezīmi, kolekcijas skatu, kas darbojas kā šūnu režģis, un Apakšējo iezīmi. Katra kolekcijas skata šūna ir pieejama neatkarīgi, nodrošinot racionalizētu pieredzi ekrāna lasītāja lietotājiem. Taču dažreiz noklusējuma pieejamības darbība pilnībā neatbilst lietotāja vajadzībām.

Piemēram, kad lietotājs pārvietojas no Augšējās iezīmes uz pirmo šūnu kolekcijas skatā, var būt noderīgi nodrošināt papildu kontekstu, piemēram, “Tabula ar n rindām un kolonnām”. Tas uzlabo skaidrību un lietojamību, īpaši režģiem vai sarežģītām datu struktūrām.

No otras puses, pārvietojoties pretējā virzienā, sākot no Apakšējās etiķetes līdz pēdējai šūnai, teksta pielāgošana var padarīt mijiedarbību intuitīvāku un nemanāmāku. Apskatīsim, kā šo dinamisko pielāgošanu var panākt programmā Swift, izmantojot reālus piemērus. 🚀

Pavēli Lietošanas piemērs
UIAccessibility.elementFocusedNotification Šis paziņojums tiek aktivizēts ikreiz, kad VoiceOver fokuss tiek mainīts uz jaunu elementu. Tas ir būtiski, lai dinamiski atjauninātu pieejamības etiķetes, reaģējot uz fokusa virzienu.
UIAccessibility.focusedElementUserInfoKey Izmanto, lai izvilktu pašlaik fokusēto elementu no paziņojuma userInfo vārdnīcas, ļaujot identificēt konkrēto fokusā esošo UIView.
didUpdateFocusIn Delegācijas metode UICollectionViewDelegate, kas tiek izsaukta ikreiz, kad kolekcijas skatā mainās fokuss. Tas ir noderīgi, lai ieviestu dinamiskas darbības, piemēram, atjauninot etiķetes, pamatojoties uz fokusa virzienu.
UIFocusAnimationCoordinator Šis objekts nodrošina vienmērīgas animācijas, kad fokuss mainās, uzlabojot lietotāja pieredzi, kad pieejamības elementi tiek dinamiski atjaunināti.
customAccessibilityLabel Pielāgots rekvizīts, kas pievienots UICollectionViewCell apakšklasei, lai saglabātu un pārvaldītu dinamiskās pieejamības etiķetes, pamatojoties uz fokusa virzienu.
context.nextFocusedView Nodrošina UIView, kas drīz tiks fokusēts, un tas ir ļoti svarīgi, lai noteiktu un piemērotu pareizo pieejamības apzīmējumu šim elementam.
context.previouslyFocusedView Identificē UIView, kuram iepriekš bija fokuss, ļaujot pieņemt kontekstu apzinātus lēmumus, piemēram, pievienot papildu kontekstu, mainot fokusu.
NotificationCenter.default.addObserver Reģistrē novērotāju, lai noklausītos konkrētus paziņojumus, piemēram, VoiceOver fokusa izmaiņas, tādējādi nodrošinot pielāgotu darbību, kad šie paziņojumi tiek saņemti.
selector Norāda izpildes metodi, kad tiek saņemts paziņojums. Piemēram, tas ļauj apstrādāt UIAccessibility.elementFocusedNotification pielāgotā veidā.
accessibilityLabel UIApiekļuves īpašums, kas nodrošina elementu aprakstošu tekstu. Šis rekvizīts piemērā ir ignorēts, lai dinamiski iekļautu papildu kontekstu.

Pieejamības etiķešu optimizēšana ar dinamisku fokusu

Pirmajā skripta piemērā mēs izmantojam UICollectionViewDelegate protokola metodi didUpdateFocusIn, lai izsekotu, kad VoiceOver fokuss pārvietojas starp elementiem. Šī metode ļauj izstrādātājiem noteikt gan iepriekš fokusēto skatu, gan nākamo, padarot to ideāli piemērotu kontekstu apzinātiem pielāgojumiem. Pārbaudot, vai nākamais fokusētais skats ir UICollectionViewCell, skripts dinamiski atjaunina rekvizītu accessibilityLabel ar atbilstošu kontekstu. Piemēram, pārvietojot fokusu no augšējās etiķetes uz kolekcijas šūnu, mēs pievienojam tādu informāciju kā "”, sniedzot papildu skaidrību lietotājiem, kuri paļaujas uz palīgtehnoloģijām. 🧑‍💻

Otrajam skriptam tiek izmantota plašāka pieeja, izmantojot NotificationCenter, klausoties UIAccessibility.elementFocusedNotification. Šis paziņojums pārraida izmaiņas VoiceOver fokusā visā lietotnē. Apstrādājot šo paziņojumu, skripts dinamiski nosaka, kuram elementam ir fokuss, un attiecīgi atjaunina savu pieejamības etiķeti. Šī pieeja ir īpaši noderīga, ja vairākiem sarežģītas lietotāja interfeisa komponentiem ir nepieciešami līdzīgi fokusa atjauninājumi. Piemēram, iedomājieties interaktīvu karšu režģi, kurā katra karte maina savu aprakstu, pamatojoties uz fokusa virzienu — tas tiek efektīvi apstrādāts, izmantojot paziņojumus.

Abas pieejas ir modulāras un atkārtoti lietojamas. Pirmais skripts ir cieši integrēts ar UICollectionView, padarot to par ideālu risinājumu lietotāja saskarnēm, kuru pamatā ir kolekcijas skati. No otras puses, uz paziņojumiem balstīts skripts ir elastīgāks un labi darbojas dažādos izkārtojumos, piemēram, režģos, kas apvienoti ar etiķetēm un pogām. Pielāgotu rekvizītu, piemēram, `customAccessibilityLabel`, izmantošana nodrošina, ka pieejamības teksta atjauninājumi netraucē lietotāja saskarnes elementu pamata funkcionalitāti. Piemēram, ceļojumu lietotnē, kad fokuss tiek novirzīts uz galamērķa karti, kartes informācija var dinamiski ietvert informāciju par to, vai tā ir daļa no piedāvātā saraksta vai ieteikumiem, tādējādi bagātinot lietotāja pieredzi. ✈️

Šo ieviešanu galvenais mērķis ir nodrošināt, lai pieejamības etiķete būtu kodolīga, taču aprakstoša. Virziena konteksta pievienošana, mainot fokusu, var novērst neskaidrības lietotājiem, kuri pārvietojas sarežģītās saskarnēs. Piemēram, norādot "Top Label to Cell 1, table", lietotāji var saprast gan savu pozīciju lietotāja saskarnē, gan struktūru, ar kuru viņi mijiedarbojas. Šī pārdomātā pieejamības funkciju integrācija ne tikai atbilst WCAG vadlīnijām, bet arī rada intuitīvu, uz lietotāju vērstu pieredzi. Abi risinājumi nodrošina, ka pieejamība joprojām ir pirmās klases pilsonis iOS lietotņu izstrādē.

Dinamiskās pieejamības teksts operētājsistēmā iOS, pamatojoties uz fokusa virzienu

Šis risinājums koncentrējas uz Swift programmēšanu, izmantojot UIKit pieejamības līdzekļus, lai dinamiski pielāgotu lietotāja interfeisa elementu pieejamības etiķeti, pamatojoties uz fokusa virzienu.

// 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)"
        }
    }
}

Dinamiskā fokusa regulēšana ar paziņojumu novērotājiem

Šī pieeja izmanto Swift paziņojumu centru, lai uzklausītu VoiceOver fokusa izmaiņas un dinamiski atjauninātu pieejamības etiķetes.

// 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
    }
}

Dinamiskas un kontekstuālas pieejamības pieredzes izveide

Pieejamība ir mūsdienu lietotņu izstrādes stūrakmens, īpaši tādām platformām kā iOS, kur palīgrīkiem, piemēram, VoiceOver ir galvenā loma. Niansēts, bet bieži aizmirsts aspekts ir spēja nodrošināt dinamisku kontekstu, pamatojoties uz navigācijas fokusa virzienu. Ieviešot loģiku, kas izseko, vai fokuss tiek pārvietots no augšas uz leju vai otrādi, izstrādātāji var pievienot nozīmīgu informāciju elementu pieejamības tekstam, bagātinot lietotāja pieredzi. Piemēram, uz režģi balstītā galerijas lietotnē šūnas var aprakstīt savu atrašanās vietu un kontekstu, kad fokuss pāriet no virsraksta uz režģi, palīdzot lietotājiem izprast savu vietu struktūrā. 🔍

Vēl viens būtisks aspekts ir tas, ka šī dinamiskā pielāgošana neaprobežojas tikai ar UICollectionView. To var lietot arī citiem elementiem, piemēram, UITableView, skursteņiem vai pielāgotiem skatiem. Piemēram, ja lietotājs pārvietojas vairāku sadaļu tabulā, galvenes var pievienot kontekstu par zem tām esošajām rindām, kad fokuss ieiet sadaļā vai iziet no tās. Tas nodrošina, ka lietotāji, kuri izmanto VoiceOver, var iegūt saskarnes telpisku un hierarhisku izpratni bez papildu piepūles, veicinot lietojamību un atbilstību WCAG standartiem. 🎯

Papildus pamata lietošanas gadījumiem šī metode atbalsta arī uzlabotas mijiedarbības modeļus. Piemēram, izglītojošā lietotnē, kad viktorīnas jautājums kļūst aktuāls, tas var paziņot tādu informāciju kā jautājuma numurs, atlikušo jautājumu kopskaits vai pat mājieni par tēmu. Šādas detaļas uzlabo iesaisti un samazina kognitīvo slodzi lietotājiem, kuri paļaujas uz palīgtehnoloģijām. Izstrādātājiem ir jāpiešķir prioritāte šiem dinamiskajiem uzlabojumiem, lai nodrošinātu, ka viņu lietotnes efektīvi un iekļaujoši apkalpo dažādas mērķauditorijas. 🌍

  1. Kā noteikt VoiceOver fokusa izmaiņas?
  2. Jūs varat izmantot lai klausītos fokusa izmaiņas.
  3. Kāds ir labākais veids, kā atjaunināt pieejamības etiķetes?
  4. Izmantojot kombināciju no un pielāgotus rekvizītus, piemēram, , ir efektīvs dinamiskiem atjauninājumiem.
  5. Vai dinamiskās etiķetes var uzlabot lietojamību nestandarta lietotāja interfeisa izkārtojumiem?
  6. Jā, pielāgojot aprakstus režģiem, tabulām vai pielāgotiem skatiem, jūs sniedzat lietotājiem labāku izpratni par lietotāja interfeisa struktūru.
  7. Kādas problēmas rodas saistībā ar kontekstu atpazīstamām etiķetēm?
  8. Konsekvences nodrošināšana fokusa pārejās var būt sarežģīta. Testēšana dažādos navigācijas scenārijos ir būtiska.
  9. Kā šīs metodes var padarīt atkārtoti lietojamas visos projektos?
  10. Lietderības vai bāzes klases izveide fokusa atjauninājumu pārvaldībai ir efektīvs risinājums atkārtotai izmantošanai.

Dinamiskās pieejamības teksts bagātina navigācijas pieredzi, īpaši sarežģītos izkārtojumos, piemēram, režģos vai kolekcijas skatos. Pievienojot kontekstu fokusa pārejām, piemēram, rindu un kolonnu paziņošanai, lietotāji var iegūt skaidrāku izpratni par savu pozīciju saskarnē. Šī pieeja nodrošina iekļaušanu un lietojamību plašākai auditorijai.

Šo metožu izmantošana reālās pasaules lietotnēs, piemēram, izglītības platformās vai galerijās, uzlabo to funkcionalitāti. Pielāgošanās lietotāja navigācijas modeļiem atspoguļo pārdomātu dizainu. Izstrādātājiem būtu jāpiešķir prioritāte pieejamībai no paša sākuma, nodrošinot atbilstību standarti un izstrādātas lietotnes, kas atbilst dažādām lietotāju vajadzībām. 🌍

  1. Detalizēta dokumentācija par UIA pieejamība , izskaidrojot UIKit pieejamības līdzekļus un to lietojumprogrammas.
  2. Ieskats un piemēri no Apple oficiālā rokasgrāmata par Pieejamības pielāgošana , ar praktiskiem padomiem izstrādātājiem.
  3. Kopienas diskusijas par dinamisku VoiceOver fokusa pārvaldību Stack Overflow , tostarp risinājumi īpašiem lietošanas gadījumiem.