Buscar..


Introducción

La accesibilidad en iOS permite a los usuarios con discapacidades auditivas y discapacidades visuales acceder a iOS y a su aplicación al admitir varias funciones como VoiceOver, Control de voz, Blanco sobre negro, Audio mono, Discurso a texto, etc. Proporcionar accesibilidad en la aplicación iOS significa hacer que la aplicación sea utilizable para todos.

Hacer una vista accesible

Marque su subclase UIView como un elemento accesible para que sea visible para VoiceOver.

myView.isAccessibilityElement = YES;

Asegúrese de que la vista exprese una etiqueta, un valor y una sugerencia significativos. Apple proporciona más detalles sobre cómo elegir buenas descripciones en la Guía de programación de accesibilidad .

Marco de accesibilidad

El marco de accesibilidad es utilizado por VoiceOver para los toques de prueba de impacto, dibujando el cursor de VoiceOver y calculando en qué parte del elemento enfocado simula un toque cuando el usuario toca la pantalla dos veces. Tenga en cuenta que el marco está en coordenadas de pantalla!

myElement.accessibilityFrame = frameInScreenCoordinates;

Si sus elementos o diseños de pantalla cambian a menudo, considere anular - accessibilityFrame para proporcionar siempre un rect actualizado. El cálculo del marco relativo a la pantalla de las subvistas de vista de desplazamiento puede ser propenso a errores y tedioso. iOS 10 introduce una nueva API para hacer esto más fácil: accessibilityFrameInContainerSpace .

Cambio de pantalla

VoiceOver funciona muy bien la mayor parte del tiempo, leyendo en voz alta pantallas llenas de contenido y siguiendo intuitivamente al usuario. Por desgracia, ninguna solución general es perfecta. A veces solo usted, el desarrollador de la aplicación, sabe dónde debe enfocarse VoiceOver para una experiencia de usuario óptima. Afortunadamente, VoiceOver escucha las notificaciones de accesibilidad del sistema para obtener pistas sobre dónde pertenece el foco. Para mover el cursor de VoiceOver manualmente, publique una notificación de cambio en la pantalla de accesibilidad:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, firstElement);

Cuando se publica esta notificación, una breve serie de tonos notifica a los usuarios del cambio. El segundo parámetro puede ser el siguiente elemento para enfocar o una cadena que anuncia el cambio. Solo publique una notificación de cambio de pantalla si la experiencia de VoiceOver es mala sin ella y no existe ninguna otra solución. Mover el cursor de VoiceOver es como tocar la pantalla de un usuario vidente. Puede ser molesto y desorientador ser guiado en esa dirección.

Cambio de diseño

En muchos casos, el contenido dentro de una sola pantalla se actualizará con contenido nuevo o diferente. Por ejemplo, imagine un formulario que revela opciones adicionales basadas en la respuesta del usuario a una pregunta anterior. En este caso, una notificación de "cambio de diseño" le permite anunciar el cambio o enfocarse en un nuevo elemento. Esta notificación acepta los mismos parámetros que la notificación de cambio de pantalla.

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, firstElement);

Anuncio

Los anuncios son útiles para alertar a los usuarios sobre eventos que no requieren ninguna interacción, como "pantalla bloqueada" o "carga finalizada". Use un anuncio más específico para notificar a los usuarios sobre cambios en la pantalla o cambios menores en el diseño.

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

Elementos de pedido

VoiceOver navega desde la parte superior izquierda a la inferior derecha, independientemente de la jerarquía de vistas. Esta es generalmente la forma en que el contenido se organiza en los idiomas de izquierda a derecha, ya que las personas videntes tienden a escanear la pantalla en un "patrón en forma de F". Los usuarios de VoiceOver esperarán navegar de la misma manera que los usuarios típicos. La previsibilidad y la consistencia son muy importantes para la accesibilidad. Evite realizar personalizaciones que "mejoren" el comportamiento predeterminado (por ejemplo, ordenar primero la barra de pestañas en el orden de deslizamiento). Dicho esto, si ha recibido comentarios de que el orden de los elementos en su aplicación es sorprendente, hay un par de maneras en que puede mejorar la experiencia.

Si VoiceOver debería leer las subvistas de una vista una después de la siguiente, pero no es así, es posible que deba sugerir a VoiceOver que los elementos contenidos en una sola vista están relacionados. Puede hacerlo configurando shouldGroupAccessibiltyChildren :

myView.shouldGroupAccessibilityChildren = YES;

Para admitir estructuras de navegación complejas que abarcan varios contenedores o incluyen interfaces representadas sin UIKit, considere implementar el protocolo de contenedor en la vista principal.

Contenedor de Accesibilidad

VoiceOver puede navegar muchas aplicaciones en iOS porque la mayoría de UIKit clases de UIAccessibilityProtocol implementan UIAccessibilityProtocol . Las características que no representan elementos en pantalla utilizando UIView , incluidas las aplicaciones que aprovechan Core Graphics o Metal para realizar dibujos, deben describir estos elementos para la accesibilidad. A partir de iOS 8.0, esto puede hacerse asignando una propiedad en UIView contenga elementos inaccesibles:

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

Cada objeto en la matriz puede ser una instancia de UIAccessibilityElement o cualquier otra clase que se adhiera a UIAccessibilityProtocol . Los elementos secundarios deben devolverse en el orden en que el usuario debe navegarlos. Como autor de la aplicación, puede usar contenedores de accesibilidad para anular el ordenamiento predeterminado de arriba a abajo a la derecha de la navegación por deslizamiento de VoiceOver. Dado que UIView implementa UIAccessibilityProtocol , puede combinar instancias de UIAccessibilityElement y UIView en la misma matriz de elementos de accesibilidad secundarios. Tenga en cuenta que si asigna elementos manualmente, no necesita implementar ningún método de protocolo de accesibilidad dinámico, aunque es posible que deba emitir una notificación de cambio de pantalla para que VoiceOver detecte los elementos.

Vista modal

Las vistas modales captan por completo la atención del usuario hasta que se completa una tarea. iOS aclara esto a los usuarios atenuando y deshabilitando el resto del contenido cuando está visible una vista modal, como una alerta o ventana emergente. Una aplicación que implementa una interfaz modal personalizada debe sugerir a VoiceOver que esta vista merece la atención del usuario al configurar accessibilityViewIsModal . Tenga en cuenta que esta propiedad solo debe establecerse en la vista que contenga contenido modal, no elementos contenidos dentro de una vista modal.

myModalView.accessibilityViewIsModal = YES;

Etiquetar una vista como modal anima a VoiceOver a ignorar las vistas de hermanos. Si, después de configurar esta propiedad, encuentra que VoiceOver aún navega por otros elementos en su aplicación, intente ocultar las vistas de problemas hasta que se elimine el modal.

Elementos ocultos

La mayoría de las clases de UIKit, incluida UIView, se adhieren a UIAccessibilityProtocol y devuelven los valores correctos de forma predeterminada. Es fácil dar por sentado que un conjunto UIView en oculto también está ausente de la jerarquía de accesibilidad y no será navegado por VoiceOver. Si bien este comportamiento predeterminado suele ser suficiente, hay ocasiones en que una vista estará presente en la jerarquía de vistas pero no será visible o navegable. Por ejemplo, una colección de botones puede ser superpuesta por otra vista, haciéndolos invisibles para un usuario vidente. Sin embargo, VoiceOver todavía intentará navegarlos ya que técnicamente no están ocultos de UIKit y, por lo tanto, aún están presentes en la jerarquía de accesibilidad. En tales casos, debe sugerir a VoiceOver que la vista principal no es accesible. Puede hacerlo ocultando explícitamente la vista de UIKit configurando la opción oculta cuando la vista se sale de la pantalla:

myViewFullofButtons.hidden = YES;

Alternativamente, puede dejar la vista principal visible y simplemente ocultar sus elementos secundarios de la jerarquía de accesibilidad:

myViewFullofButtons.accessibilityElementsHidden = YES;

Las vistas temporales son otro lugar donde querrá ocultar elementos de la jerarquía de accesibilidad y dejarlos visibles para los usuarios. Por ejemplo, la vista que aparece cuando presiona el botón de volumen es visible para los usuarios videntes, pero no exige atención como lo hace una alerta normal. No querrá que VoiceOver interrumpa al usuario y mueva el cursor lejos de lo que estaba haciendo para anunciar el nuevo volumen, especialmente dado que el ajuste del volumen ya proporciona retroalimentación auditiva a través del sonido de clic. En casos como este, querrá ocultar la vista usando accessibilityElementsHidden .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow