Ricerca…


introduzione

L'accessibilità in iOS consente agli utenti con disabilità uditive e disabilità visive di accedere a iOS e alla tua applicazione supportando varie funzionalità come VoiceOver, Controllo vocale, Bianco su nero, Mono Audio, Discorso al testo e così via. Fornire l'accessibilità nell'app per iOS significa rendere l'app utilizzabile per tutti.

Rendere accessibile una vista

Contrassegna la sottoclasse UIView come elemento accessibile in modo che sia visibile a VoiceOver.

myView.isAccessibilityElement = YES;

Assicurati che la vista contenga un'etichetta, un valore e un suggerimento significativi. Apple fornisce maggiori dettagli su come scegliere una buona descrizione nella Guida alla programmazione dell'accessibilità .

Cornice di accessibilità

Il frame di accessibilità viene utilizzato da VoiceOver per i tocchi di hit, disegnando il cursore VoiceOver e calcolando la posizione dell'elemento focalizzato per simulare un tocco quando l'utente tocca due volte lo schermo. Si noti che la cornice è in coordinate dello schermo!

myElement.accessibilityFrame = frameInScreenCoordinates;

Se i tuoi elementi o layout dello schermo cambiano spesso, considera l'override - accessibilityFrame per fornire sempre un rect aggiornato. Il calcolo della cornice relativa alla retinatura delle viewview della vista di scorrimento può essere soggetto a errori e noioso. iOS 10 introduce una nuova API per semplificare questo aspetto: accessibilityFrameInContainerSpace .

Cambia schermo

VoiceOver funziona alla grande la maggior parte del tempo, leggendo scherzosamente gli schermi ad alta voce pieni di contenuti e seguendo intuitivamente l'utente. Ahimè, nessuna soluzione generale è perfetta. A volte solo tu, lo sviluppatore dell'app, sai dove VoiceOver dovrebbe essere focalizzato per un'esperienza utente ottimale. Fortunatamente, VoiceOver ascolta le notifiche di accessibilità del sistema per trovare indizi su dove si trova l'attenzione. Per spostare manualmente il cursore VoiceOver, pubblica una notifica di modifica della schermata di accessibilità modificata:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, firstElement);

Quando viene inviata questa notifica, una breve serie di toni notifica agli utenti la modifica. Il secondo parametro può essere l'elemento successivo da mettere a fuoco o una stringa che annuncia la modifica. Pubblica solo una notifica di cambio schermo se l'esperienza di VoiceOver è scarsa senza di essa e non esiste un'altra soluzione alternativa. Spostare il cursore VoiceOver è come colpire lo schermo di un utente avvistato. Può essere fastidioso e disorientante essere condotto in quel modo.

Modifica del layout

In molti casi, i contenuti all'interno di una singola schermata si aggiornano con contenuti nuovi o diversi. Ad esempio, immagina un modulo che rivela opzioni aggiuntive in base alla risposta dell'utente a una domanda precedente. In questo caso, una notifica di "cambio formato" ti consente di annunciare la modifica o concentrarsi su un nuovo elemento. Questa notifica accetta gli stessi parametri della notifica di modifica dello schermo.

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, firstElement);

Annuncio

Gli annunci sono utili per avvisare gli utenti di eventi che non richiedono alcuna interazione, come "schermata bloccata" o "caricamento completato". Utilizzare un annuncio più specifico per notificare agli utenti le modifiche alle schermate o altre modifiche di layout minori.

UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"The thing happened!");

Ordinare gli elementi

VoiceOver passa da in alto a sinistra a in basso a destra, indipendentemente dalla gerarchia della vista. Questo di solito è il modo in cui il contenuto è disposto nelle lingue da sinistra a destra poiché gli individui vedenti tendono a scansionare lo schermo in un "modello a forma di F". Gli utenti di VoiceOver si aspettano di navigare allo stesso modo degli utenti tipici. La prevedibilità e la coerenza sono molto importanti per l'accessibilità. Si prega di astenersi dal fare personalizzazioni che "migliorano" il comportamento di default (ad esempio ordinando la barra delle schede prima nell'ordine di scorrimento). Detto questo, se hai ricevuto feedback sul fatto che l'ordine degli elementi nella tua app è sorprendente, ci sono un paio di modi in cui puoi migliorare l'esperienza.

Se VoiceOver deve leggere le sottoview di una vista una dopo l'altra ma non lo è, potrebbe essere necessario suggerire a VoiceOver che gli elementi contenuti in una singola vista sono correlati. Puoi farlo impostando shouldGroupAccessibiltyChildren :

myView.shouldGroupAccessibilityChildren = YES;

Per supportare strutture di navigazione complesse che si estendono su più contenitori o includere interfacce renderizzate senza UIKit, prendere in considerazione l'implementazione del protocollo contenitore nella visualizzazione padre.

Contenitore di accessibilità

VoiceOver può navigare su molte app su iOS perché la maggior UIKit classi UIAccessibilityProtocol implementa UIAccessibilityProtocol . Le funzionalità che non rappresentano elementi sullo schermo utilizzando UIView , incluse le app che utilizzano Core Graphics o Metal per eseguire il disegno, devono descrivere questi elementi per l'accessibilità. A partire da iOS 8.0, questo può essere fatto assegnando una proprietà su UIView contenente elementi inaccessibili:

myInaccessibleContainerView.accessibilityElements = @[elements, that, should, be, accessible];

Ogni oggetto nell'array può essere un'istanza di UIAccessibilityElement o qualsiasi altra classe che aderisce a UIAccessibilityProtocol . Gli elementi figli devono essere restituiti nell'ordine in cui l'utente deve navigarli. Come autore di un'applicazione, puoi utilizzare i contenitori di accessibilità per sostituire l'ordinamento predefinito in alto a sinistra in basso a destra della navigazione a scorrimento di VoiceOver. Dato che UIView implementa UIAccessibilityProtocol , è possibile combinare le istanze di UIAccessibilityElement e UIView nella stessa serie di elementi di accessibilità figlio. Tieni presente che se assegni manualmente gli elementi, non è necessario implementare alcun metodo di protocollo di accessibilità dinamica, anche se potrebbe essere necessario inviare una notifica di modifica dello schermo per gli elementi che verranno rilevati da VoiceOver.

Vista modale

Le visualizzazioni modali catturano completamente l'attenzione dell'utente fino al completamento di un'attività. iOS lo chiarisce agli utenti attenuando e disattivando tutti gli altri contenuti quando è visibile una vista modale, ad esempio un avviso o un popover. Un'app che implementa un'interfaccia modale personalizzata deve suggerire a VoiceOver che questa vista merita l'attenzione esclusiva dell'utente impostando accessibilityViewIsModal . Si noti che questa proprietà deve essere impostata solo nella vista che contiene il contenuto modale, non gli elementi contenuti in una vista modale.

myModalView.accessibilityViewIsModal = YES;

Tagging di una vista come modale incoraggia VoiceOver a ignorare le visualizzazioni di pari livello. Se, dopo aver impostato questa proprietà, trovi che VoiceOver continua a scorrere altri elementi nella tua app, prova a nascondere le visualizzazioni dei problemi finché la modale non viene chiusa.

Elementi nascosti

La maggior parte delle classi UIKit, incluso UIView, aderisce a UIAccessibilityProtocol e restituisce valori corretti per impostazione predefinita. È facile dare per scontato che un UIView impostato su nascosto sia anche assente dalla gerarchia di accessibilità e non venga navigato da VoiceOver. Mentre questo comportamento predefinito è solitamente sufficiente, ci sono momenti in cui una vista sarà presente nella gerarchia della vista ma non visibile o navigabile. Ad esempio, una collezione di pulsanti può essere sovrapposta a un'altra vista, rendendola invisibile a un utente vedente. VoiceOver, comunque, cercherà comunque di navigare tra loro poiché tecnicamente non sono nascosti da UIKit e quindi sono ancora presenti nella gerarchia di accessibilità. In questi casi, devi indicare a VoiceOver che la vista principale non è accessibile. Puoi farlo nascondendo esplicitamente la vista da UIKit impostando nascosto quando la vista va fuori schermo:

myViewFullofButtons.hidden = YES;

In alternativa, puoi lasciare la vista principale visibile e nascondere semplicemente i suoi figli dalla gerarchia di accessibilità:

myViewFullofButtons.accessibilityElementsHidden = YES;

Le viste temporanee sono un altro punto in cui si desidera nascondere gli elementi della gerarchia di accessibilità lasciandoli visibili agli utenti. Ad esempio, la vista che si apre quando si preme il pulsante del volume è visibile agli utenti vedenti, ma non richiede attenzione come fa un normale avviso. Non vorresti che VoiceOver interrompesse l'utente e spostasse il cursore da qualsiasi cosa stessero facendo per annunciare il nuovo volume, specialmente dato che il volume di regolazione fornisce già un riscontro uditivo attraverso il clic che fa. In casi come questo, ti consigliamo di nascondere la vista usando accessibilityElementsHidden .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow