Table of Contents
In iOS, le caratteristiche come VoiceOver e Dynamic Type svolgono un ruolo cruciale nel migliorare l'usabilità per le persone con disabilità visive, bassa visione e altre esigenze di accessibilità. Integrando con pensiero questi strumenti, gli sviluppatori e i designer possono garantire che le loro applicazioni siano utilizzabili da un pubblico più ampio, inclusi coloro che si affidano alle tecnologie assistive.
Comprensione di VoiceOver
VoiceOver è un lettore di schermo integrato in iOS che legge tutto ciò che appare sullo schermo—pulsanti, etichette, immagini, cursori e persino modifiche di testo. Consente agli utenti di di difetti visivi di navigare applicazioni e siti web utilizzando un ricco insieme di gesti e feedback parlati. Quando un utente tocca o trascina un dito attraverso lo schermo, VoiceOver descrive l'elemento sotto il loro dito.
VoiceOver si affida all'API di Accessibilità (UIAccessibility) per estrarre informazioni sugli elementi dello schermo. Ogni controllo UIKit –, [, , e le viste personalizzate – può esporre etichette di accessibilità, tratti, suggerimenti e azioni personalizzate.
Quando si progetta per VoiceOver, gli sviluppatori dovrebbero garantire che tutti gli elementi interattivi siano adeguatamente etichettati e accessibili tramite le API di accessibilità. Ciò include non solo controlli nativi, ma anche interfacce personalizzate, riconoscenti di gesti e contenuti dinamici. Un errore comune è presumere che le etichette di default da contenuti di testo saranno sufficienti.
Tracce di accesso chiave
iOS fornisce un insieme di caratteristiche di accessibilità[ ([[[]) che informano VoiceOver sul comportamento di un elemento.
- Pulsante] – indica che l'elemento può essere premuto per eseguire un'azione.
- Header[] – segna una sezione intestata, permettendo agli utenti di saltare tra le voci in fretta.
- StaticText[] – dice a VoiceOver che l'elemento è testo di sola lettura.
- Adjustable[] – per controlli come cursori o stepper che permettono gesti di incremento/dichiarazione.
- Seletto[] – indica che l'elemento è in uno stato selezionato (ad esempio, una scheda).
- Link] – per gli elementi simili ad URL che aprono un indirizzo web.
L'applicazione del tratto corretto non solo migliora l'output parlato ma modifica anche il gesto impostato a disposizione dell'utente. Ad esempio, un elemento con il [Adjustable trait permette all'utente di scorrere su o giù per cambiare il suo valore.
Azioni personalizzate e di accesso
A volte non basta un’etichetta e un tratto. I suggerimenti di accesso possono fornire un contesto aggiuntivo sul risultato di un’azione, come “Apre il pannello delle impostazioni” o “Elimina l’elemento corrente”. Le note sono parlate solo dopo un breve ritardo quando l’utente si lega su un elemento, quindi devono essere usate con parsimonia, solo quando il comportamento non è evidente dall’etichetta da solo.
Per elementi che supportano molteplici azioni (ad esempio, una cella di tabella che può essere spostata per rivelare cancellazioni, condivisione e nascondere pulsanti), utilizzare [ azioni personalizzate]. VoiceOver annuncia il numero di azioni disponibili e consente all'utente di eseguirle tramite un rotore dedicato.
Implementare il supporto VoiceOver
Per sostenere in modo efficace VoiceOver, prendere in considerazione le seguenti migliori pratiche, non sono solo linee guida, sono necessarie per passare gli audit di accessibilità e per creare un'esperienza equa.
- Usa etichette descrittive per pulsanti, link e controlli. Un pulsante etichettato “Salva” è accettabile; meglio è “Salva documento” o “Salva bozza”. Evitare etichette generiche come “Maton” o “Item 1”. Per icone senza testo visibile, impostare l'etichetta di accessibilità per descrivere l'azione, ad esempio, “Aggiungi nuovo contatto” per un'icona.
- Assicurarsi che tutte le immagini abbiano un testo significativo.] Le immagini decorative che non trasmettono informazioni devono essere contrassegnate come [ così VoiceOver li ignora. Le immagini informatiche, come una carta o una foto del prodotto, hanno bisogno di una descrizione concisa. Non dimenticare di aggiornare le immagini in e ]]].
- La navigazione più semplice usando i gesti VoiceOver[[]]] per identificare i potenziali problemi. Accendere VoiceOver in Impostazioni → Accessibilità → VoiceOver e provare a completare tutte le attività principali nella vostra app senza guardare lo schermo.
- Utilizza i tratti di accessibilità[[]] per definire lo scopo degli elementi dell'interfaccia utente. Ad esempio, imposta sui titoli delle sezioni, e sugli elementi tappabili.
- Gruppo elementi correlati[[[]]] utilizzando la vista dei container con [ e un'etichetta combinata. Ad esempio, una scheda che mostra un'immagine del prodotto, un nome e un prezzo dovrebbero essere un elemento accessibile con un'etichetta come “Le cuffie Wireless, $79.99”.
- Post accessty notifiche[[]] quando il contenuto cambia dinamicamente. Utilizza [] per focalizzare VoiceOver sui contenuti aggiornati, come un nuovo messaggio in una chat o un modale che appare.
- Avoid affidandosi esclusivamente a colori o a visivi[] per trasmettere lo stato. Gli utenti VoiceOver non possono vedere i bordi degli errori rossi. Combinare sempre indicatori visivi con testo, simboli o tratti come .
- Supporto rotore di accessibilità[[] operazioni quando opportuno. Ad esempio, se la tua applicazione include un cursore per volume, implementare il [Adjustable] tracciare e esporre le azioni di incremento e di decremento tramite il rotore.
Pitfalls Voce comune
Anche gli sviluppatori esperti possono trascurare problemi sottili. Ecco i problemi frequenti per guardare per:
- Over-nested access elements[[]: Se una vista genitoriale è accessibile e i suoi figli sono anche accessibili, VoiceOver annuncerà il genitore e poi ogni bambino, causando ridondanza e confusione.
- Miglioremente gestito le viste di scorrimento[[]: VoiceOver dipende dalla dimensione del contenuto della visualizzazione del rotolo. Se la dimensione del contenuto non è impostata correttamente, VoiceOver non può scorrere attraverso tutti gli elementi.
- ]Identificatori di accessibilità mancanti[[]: Mentre l'identificatore di accessibilità ([]) è principalmente per test automatizzati, non dovrebbe essere utilizzato come etichetta per VoiceOver.
- Ignorando i comandi della tastiera[[]: Alcuni utenti combinano VoiceOver con una tastiera esterna. Assicurare che la tua app risponda alle abbreviazioni della tastiera comune (ad esempio, Cmd+S for Save) e che queste azioni sono scoperte tramite il rotore di accessibilità.
Comprensione del tipo dinamico
Dynamic Type permette agli utenti di personalizzare le dimensioni del testo in tutte le applicazioni iOS, migliorando la leggibilità e il comfort per le persone con bassa visione, presbiopia o semplicemente per coloro che preferiscono il testo più grande. Quando un utente regola le dimensioni del testo in Impostazioni → Display & Brightness → Formato testo, o utilizza la Accessibilità Shortcut, qualsiasi applicazione che supporta Dynamic Type automaticamente la scala del testo.
Il tipo dinamico è costruito sul concetto di stili di testo definiti da . iOS fornisce un insieme di stili predefiniti: , , , , ], []], ,
Quando si progetta un tipo dinamico, gli sviluppatori devono garantire che le scale di testo siano corrette e che il layout si adatti senza rompere, sovrapporre o troncare contenuti in modi indesiderati. Questo va oltre il testo stesso: margini, imbottitura, larghezze di pulsante, e anche dimensioni di immagine possono essere necessarie per mantenere un'occhiata armoniosa ad ogni dimensione.
Categorie di dimensione del contenuto
Ispettore X definisce diversi livelli di dimensione del testo, che vanno da XS] (extra small) a XXL (extra extra extra extra large). Le categorie di accessibilità (più grande di ]AX1]]) sono progettate specificamente per gli utenti con i punti di simulazione visiva possono produrre anteprime.
In genere, il testo del corpo cresce di più, mentre le piccole didascalie o i titoli dei pulsanti possono scalare meno aggressivamente. La classe ti dà il controllo di granato eccellente sul comportamento di scaling per i caratteri personalizzati che non sono legati a uno stile di testo.
Implementazione di tipo dinamico
Per supportare il tipo dinamico in modo efficace, seguire queste pratiche, assicurando che l'app rispetta le preferenze dell'utente e si comporta prevedibilmente in tutta la gamma di formati di testo.
- ]Utilizza stili di testo che si adattano automaticamente alle impostazioni dell'utente[[, [, ecc In Interface Builder, è possibile impostare il carattere a uno stile di testo nell'ispettore Attributi. In codice, utilizzare .
- Avoid caratteri fissi[[]]; invece, si affida a font scalabili. Se si utilizza un carattere personalizzato, registrarlo e poi crearlo con per applicare la stessa curva di scaling dei font di sistema.
- Test la tua app con diverse impostazioni di formato testo[[[]] nelle opzioni di Accessibilità. Vai a Impostazioni → Accessibilità → Visualizza & Formato testo → Più grande Testo per abilitare le dimensioni di accessibilità. Quindi navigare attraverso ogni schermo nella tua app, prestando particolare attenzione ai pulsanti che vengono clipped, immagini sovrapposte e troncazione di testo.
- Assicurarsi che il layout rimanga flessibile e leggibile in tutte le dimensioni. Utilizzare vincoli di layout automatico che si adattano alle dimensioni del contenuto piuttosto che alle larghezze fisse. Ad esempio, un'etichetta dovrebbe avere vincoli di guida e di tracciamento alla sua supervisione, non una larghezza fissa, in modo da poter crescere e avvolgere.
- Adjust line Altezza e paragrafo spaziatura[[[] dinamicamente. L'altezza della linea predefinita per gli stili di testo è appropriata, ma se si utilizza stringhe attribuite, assicurarsi di impostare rispetto alla dimensione del carattere.
- ]Utilizza ] per i caratteri personalizzati: [] assicura che le scale del carattere identico al font del corpo del sistema. Puoi anche usare per scalare le costanti come margini o raggi angolo proporzionalmente.
- Per immagini o icone che accompagnano il testo[[]], consideri la fornitura di risoluzioni multiple o l'utilizzo di SVG in modo che scaldino senza pixelazione. Un'icona che si trova accanto a un'etichetta potrebbe avere bisogno di crescere quando il testo cresce. È possibile utilizzare cataloghi di asset con immagini specifiche dimensioni o immagini scala utilizzando con scaling stile di testo.
- Aggiornare i layout quando il tipo dinamico cambia in runtime[[]]. Registrati per la notifica per invalidare il layout e ricalcolare le dimensioni. Se si utilizza [, il sistema chiama automaticamente l'aggiornamento della raccolta dei tratti; tuttavia, le opinioni personalizzate potrebbero aver bisogno di una gestione esplicita.
Gestione del tipo dinamico in vista della tabella e vista della collezione
Il tipo dinamico può complicare le viste dell'elenco se le altezze delle celle sono fissate. La soluzione è quella di utilizzare le celle auto-sizing che calcolano la loro altezza intrinseca basata sul contenuto. Impostare l'altezza della riga stimata e consentire Auto Layout per espandere le celle. Per , impostare e fornire un ragionevole
Accessibilità Dimensioni e Prestazioni
In applicazioni di chat o feed di notizie, questo è accettabile e previsto. Tuttavia, in griglie ad alta intensità di dati (ad esempio, una vista mese di calendario), la scala di testo può rompere il layout. In tali casi, si potrebbe scegliere di catturare la dimensione massima del testo per quella particolare vista o fornire un layout alternativo compatto.
Un'altra considerazione per le prestazioni: le immagini di scaling a runtime possono essere costose. Se fornisci diverse dimensioni dell'immagine per diverse categorie di dimensioni del contenuto, carica solo la risoluzione necessaria.
Accessibilità Oltre VoiceOver e tipo dinamico
Mentre VoiceOver e Dynamic Type sono due delle caratteristiche di accessibilità più efficaci in iOS, non sono le uniche. Una strategia di accessibilità completa include anche il supporto per:
- Switch Control[] – per gli utenti con controllo motore limitato.
- AssistiveTouch[] – pulsanti virtuali e gesti per gli utenti che non possono eseguire determinati movimenti fisici.
- Controllo vocale[] – navigazione a base vocale completa (diversa da VoiceOver).
- Ridurre il movimento[] – per gli utenti sensibili alle animazioni.
- Aumentare il contrasto[] e Forme del pulsante[] – per una migliore chiarezza visiva.
- Custo Capzioni[] e Descrizioni udio[] – per contenuti multimediali.
Ciascuna di queste funzionalità interagisce con la tua app in modi specifici. Ad esempio, elementi che supportano le azioni personalizzate in VoiceOver funzionano anche con Switch Control. Assicurarsi che ogni elemento interattivo sia un obiettivo di tocco di dimensioni (almeno 44x44 punti) beneficia di tutti gli utenti, in particolare di quelli con disabilità motorie.
Conclusioni
La progettazione di ogni tipo di tipo dinamico e vocale è matura, ben documentata, e relativamente semplice da implementare una volta che si comprende le API fondamentali. Integrando il supporto VoiceOver con etichette, tratti e azioni personalizzate, e adottando Dynamic Type attraverso font scalabili e layout flessibili, gli sviluppatori possono creare applicazioni iOS più inclusive e adattabili.
Per ulteriori informazioni, consultare ]Apple Human Interface Guidelines on Accessibility[, Documentazione di tipo dinamico[[, the VoiceOver developer funds], e W3C Web Content Accessibility Guidelinelineline]