Información general sobre accesibilidad

Este artículo es una descripción general de los conceptos y las tecnologías relacionados con escenarios de accesibilidad para aplicaciones de Windows.

Accesibilidad y aplicación

Hay muchas discapacidades o discapacidades posibles, incluidas las limitaciones de movilidad, visión, percepción de color, audición, voz, cognición y alfabetización. Sin embargo, puede abordar la mayoría de los requisitos siguiendo las instrucciones que se ofrecen aquí. Esto significa proporcionar:

  • Compatibilidad con interacciones de teclado y lectores de pantalla.
  • Compatibilidad con la personalización del usuario, como la fuente, la configuración de zoom (ampliación), el color y la configuración de contraste alto.
  • Alternativas o suplementos para partes de la interfaz de usuario.

Los controles para XAML proporcionan compatibilidad con teclado integrada y compatibilidad con tecnologías de asistencia, como lectores de pantalla, que aprovechan las ventajas de los marcos de accesibilidad que ya admiten aplicaciones para UWP, HTML y otras tecnologías de interfaz de usuario. Esta compatibilidad integrada permite un nivel básico de accesibilidad que se puede personalizar con muy poco trabajo estableciendo solo una serie de propiedades. Si vas a crear tus propios controles y componentes XAML personalizados, también puedes agregar compatibilidad similar a esos controles mediante el concepto de automatización del mismo nivel.

Además, el enlace de datos, el estilo y las características de plantilla facilitan la implementación de compatibilidad con cambios dinámicos para mostrar la configuración y el texto de las interfaces de usuario alternativas.

Automatización de UI

La compatibilidad con accesibilidad procede principalmente de la compatibilidad integrada con el marco de microsoft Automatización de la interfaz de usuario. Esa compatibilidad se proporciona a través de clases base y el comportamiento integrado de la implementación de clase para los tipos de control y una representación de interfaz de la API del proveedor de Automatización de la interfaz de usuario. Cada clase de control usa los conceptos Automatización de la interfaz de usuario de los sistemas del mismo nivel de automatización y los patrones de automatización que informan del rol y el contenido del control para Automatización de la interfaz de usuario clientes. La aplicación se trata como una ventana de nivel superior por Automatización de la interfaz de usuario, y a través del marco de Automatización de la interfaz de usuario todo el contenido relevante para la accesibilidad dentro de esa ventana de la aplicación está disponible para un Automatización de la interfaz de usuario cliente. Para obtener más información sobre Automatización de la interfaz de usuario, consulta Automatización de la interfaz de usuario Información general.

Tecnología de asistencia

Muchas necesidades de accesibilidad del usuario se satisfacen con productos tecnológicos de asistencia instalados por el usuario o por herramientas y configuraciones proporcionadas por el sistema operativo. Esto incluye funcionalidades como lectores de pantalla, ampliación de pantalla y configuración de alto contraste.

Los productos de tecnología de asistencia incluyen una amplia variedad de software y hardware. Estos productos funcionan a través de la interfaz de teclado estándar y los marcos de accesibilidad que informan de información sobre el contenido y la estructura de una interfaz de usuario para lectores de pantalla y otras tecnologías de asistencia. Entre los ejemplos de productos de tecnología de asistencia se incluyen:

  • Teclado en pantalla, que permite a las personas usar un puntero en lugar de un teclado para escribir texto.
  • Software de reconocimiento de voz, que convierte las palabras habladas en texto escrito.
  • Lectores de pantalla, que convierten texto en palabras habladas u otras formas como Braille.
  • Lector de pantalla narrador, que forma parte específicamente de Windows. Narrador tiene un modo táctil, que puede realizar tareas de lectura de pantalla mediante el procesamiento de gestos táctiles, para cuando no haya ningún teclado disponible.
  • Programas o configuraciones que ajustan la pantalla o las áreas de ella, por ejemplo temas de contraste alto, puntos por pulgada (ppp) configuración de la pantalla o la herramienta Lupa.

Las aplicaciones que tienen una buena compatibilidad con el teclado y el lector de pantalla suelen funcionar bien con diversos productos de tecnología de asistencia. En muchos casos, una aplicación para UWP funciona con estos productos sin modificaciones adicionales de información o estructura. Sin embargo, es posible que desee modificar algunas opciones de configuración para una experiencia de accesibilidad óptima o para implementar compatibilidad adicional.

Algunas de las opciones que puede usar para probar escenarios de accesibilidad básicos con tecnologías de asistencia se enumeran en Pruebas de accesibilidad.

Compatibilidad con lectores de pantalla e información básica de accesibilidad

Los lectores de pantalla proporcionan acceso al texto de una aplicación mediante su representación en algún otro formato, como el idioma hablado o la salida de Braille. El comportamiento exacto de un lector de pantalla depende del software y de la configuración del usuario.

Por ejemplo, algunos lectores de pantalla leen toda la interfaz de usuario de la aplicación cuando el usuario inicia o cambia a la aplicación que se está viendo, lo que permite al usuario recibir todo el contenido informativo disponible antes de intentar navegar por ella. Algunos lectores de pantalla también leen el texto asociado a un control individual cuando recibe el foco durante la navegación por tabulación. Esto permite a los usuarios orientarse a sí mismos a medida que navegan entre los controles de entrada de una aplicación. Narrador es un ejemplo de un lector de pantalla que proporciona ambos comportamientos, en función de la elección del usuario.

La información más importante que necesita un lector de pantalla o cualquier otra tecnología de asistencia para ayudar a los usuarios a comprender o navegar por una aplicación es un nombre accesible para las partes de elemento de la aplicación. En muchos casos, un control o elemento ya tiene un nombre accesible que se calcula a partir de otros valores de propiedad que se han proporcionado de otro modo. El caso más común en el que puede usar un nombre ya calculado es con un elemento que admite y muestra texto interno. Para otros elementos, a veces es necesario tener en cuenta otras formas de proporcionar un nombre accesible siguiendo los procedimientos recomendados para la estructura de elementos. Y a veces debe proporcionar un nombre que esté diseñado explícitamente como el nombre accesible para la accesibilidad de la aplicación. Para obtener una lista de cuántos de estos valores calculados funcionan en elementos comunes de la interfaz de usuario y para obtener más información sobre los nombres accesibles en general, consulte Información de accesibilidad básica.

Hay otras propiedades de automatización disponibles (incluidas las propiedades de teclado descritas en la sección siguiente). Sin embargo, no todos los lectores de pantalla admiten todas las propiedades de automatización. En general, debe establecer todas las propiedades de automatización adecuadas y probar para proporcionar la mayor compatibilidad posible para los lectores de pantalla.

Compatibilidad con el teclado

Para proporcionar una buena compatibilidad con el teclado, debe asegurarse de que todas las partes de la aplicación se pueden usar con un teclado. Si la aplicación usa principalmente los controles estándar y no usa ningún control personalizado, la mayoría de las formas ya están. El modelo de control XAML básico proporciona compatibilidad integrada con el teclado, incluida la navegación por tabulaciones, la entrada de texto y la compatibilidad específica del control. Los elementos que actúan como contenedores de diseño (como paneles) usan el orden de diseño para establecer un orden de tabulación predeterminado. Ese orden suele ser el orden de tabulación correcto que se va a usar para una representación accesible de la interfaz de usuario. Si usa controles ListBox y GridView para mostrar datos, proporcionan navegación integrada con teclas de flecha. O bien, si usa un control Button , ya controla la barra espaciadora o las teclas Entrar para la activación del botón.

Para obtener más información sobre todos los aspectos de la compatibilidad con el teclado, incluido el orden de tabulación y la activación o navegación basada en teclas, consulta Accesibilidad del teclado.

Medios y subtítulos

Normalmente se muestran medios audiovisuales a través de un objeto MediaElement. Puede usar las API de MediaElement para controlar la reproducción multimedia. Con fines de accesibilidad, proporcione controles que permitan a los usuarios reproducir, pausar y detener el medio según sea necesario. A veces, los medios incluyen componentes adicionales destinados a la accesibilidad, como subtítulos o pistas de audio alternativas que incluyen descripciones narrativas.

Texto accesible

Tres aspectos principales del texto son relevantes para la accesibilidad:

  • Las herramientas deben determinar si el texto debe leerse como parte de un recorrido de secuencia de pestañas o solo como parte de una representación general del documento. Puede ayudar a controlar esta determinación eligiendo el elemento adecuado para mostrar el texto o ajustando las propiedades de esos elementos de texto. Cada elemento de texto tiene un propósito específico y ese propósito suele tener un rol de Automatización de la interfaz de usuario correspondiente. El uso del elemento incorrecto puede dar lugar a informar del rol incorrecto para Automatización de la interfaz de usuario y crear una experiencia confusa para un usuario de tecnología de asistencia.
  • Muchos usuarios tienen limitaciones de visión que dificultan la lectura de texto a menos que tenga un contraste adecuado con el fondo. Cómo esto afecta al usuario no es intuitivo para los diseñadores de aplicaciones que no tienen esa limitación de visión. Por ejemplo, para los usuarios ciegos de color, las opciones de color deficientes en el diseño pueden impedir que algunos usuarios puedan leer el texto. Las recomendaciones de accesibilidad que se crearon originalmente para el contenido web definen estándares para el contraste que también pueden evitar estos problemas en las aplicaciones. Para obtener más información, consulta Requisitos de texto accesibles.
  • Muchos usuarios tienen dificultades para leer texto que es simplemente demasiado pequeño. Puedes evitar este problema haciendo que el texto de la interfaz de usuario de la aplicación sea razonablemente grande en primer lugar. Sin embargo, eso es difícil para las aplicaciones que muestran grandes cantidades de texto o texto intercalados con otros elementos visuales. En tales casos, asegúrese de que la aplicación interactúa correctamente con las características del sistema que pueden escalar verticalmente la pantalla, de modo que cualquier texto de las aplicaciones se escale verticalmente junto con ella. (Algunos usuarios cambian los valores de ppp como una opción de accesibilidad. Esa opción está disponible en Hacer que las cosas en la pantalla sean más grandes en Facilidad de acceso, que redirige a una interfaz de usuario de Panel de control para apariencia y visualización de personalización / ).

Compatibilidad con temas de contraste alto

Los controles de interfaz de usuario usan una representación visual definida como parte de un diccionario de recursos XAML de temas. Uno o varios de estos temas se usan específicamente cuando el sistema se establece para contraste alto. Cuando el usuario cambia al contraste alto, al buscar el tema adecuado de un diccionario de recursos dinámicamente, todos los controles de interfaz de usuario también usarán un tema de contraste alto adecuado. Solo tiene que asegurarse de que no ha deshabilitado los temas especificando un estilo explícito o usando otra técnica de estilo que impida que los temas de contraste alto se carguen e invalide los cambios de estilo. Para obtener más información, consulta Temas de contraste alto.

Diseño para la interfaz de usuario alternativa

Al diseñar las aplicaciones, tenga en cuenta cómo pueden ser utilizadas por personas con movilidad limitada, visión y audición. Dado que los productos de tecnología de asistencia hacen un uso amplio de la interfaz de usuario estándar, es especialmente importante proporcionar una buena compatibilidad con teclado y lector de pantalla incluso si no realiza ningún otro ajuste para la accesibilidad.

En muchos casos, puede transmitir información esencial mediante el uso de varias técnicas para ampliar su audiencia. Por ejemplo, puede resaltar información con información de iconos y colores para ayudar a los usuarios que son ciegos de color, y puede mostrar alertas visuales junto con efectos de sonido para ayudar a los usuarios sordos o duros de audición.

Si es necesario, puede proporcionar elementos alternativos y accesibles de la interfaz de usuario que quiten completamente elementos y animaciones no esenciales y proporcionen otras simplificaciones para simplificar la experiencia del usuario. En el ejemplo de código siguiente se muestra cómo mostrar una instancia de UserControl en lugar de otra en función de una configuración de usuario.

XAML

<StackPanel x:Name="LayoutRoot" Background="White">

  <CheckBox x:Name="ShowAccessibleUICheckBox" Click="ShowAccessibleUICheckBox_Click">
    Show Accessible UI
  </CheckBox>

  <UserControl x:Name="ContentBlock">
    <local:ContentPage/>
  </UserControl>

</StackPanel>

Visual Basic

Private Sub ShowAccessibleUICheckBox_Click(ByVal sender As Object,
    ByVal e As RoutedEventArgs)

    If (ShowAccessibleUICheckBox.IsChecked.Value) Then
        ContentBlock.Content = New AccessibleContentPage()
    Else
        ContentBlock.Content = New ContentPage()
    End If
End Sub

C#

private void ShowAccessibleUICheckBox_Click(object sender, RoutedEventArgs e)
{
    if ((sender as CheckBox).IsChecked.Value)
    {
        ContentBlock.Content = new AccessibleContentPage();
    }
    else
    {
        ContentBlock.Content = new ContentPage();
    }
}

Comprobación y publicación

Para obtener más información sobre las declaraciones de accesibilidad y la publicación de la aplicación, consulta Accesibilidad en la Tienda.

Nota:

Declarar la aplicación como accesible solo es relevante para Microsoft Store.

Compatibilidad con tecnología de asistencia en controles personalizados

Al crear un control personalizado, se recomienda implementar o ampliar una o varias subclases AutomationPeer para proporcionar compatibilidad con la accesibilidad. En algunos casos, siempre que use la misma clase del mismo nivel que la clase de control base, la compatibilidad de automatización para la clase derivada es adecuada en un nivel básico. Sin embargo, debe probar esto e implementar un elemento del mismo nivel todavía se recomienda como procedimiento recomendado para que el mismo nivel pueda notificar correctamente el nombre de clase de la nueva clase de control. La implementación de un mismo nivel de automatización personalizado tiene algunos pasos implicados. Para obtener más información, consulte Automatización personalizada del mismo nivel.

Compatibilidad con la tecnología de asistencia en aplicaciones que admiten interoperabilidad XAML/Microsoft DirectX

El contenido de Microsoft DirectX hospedado en una interfaz de usuario XAML (mediante SwapChainPanel o SurfaceImageSource) no es accesible de forma predeterminada. El ejemplo de interoperabilidad xaml SwapChainPanel DirectX muestra cómo crear Automatización de la interfaz de usuario elementos del mismo nivel para el contenido de DirectX hospedado. Esta técnica hace que el contenido hospedado sea accesible a través de Automatización de la interfaz de usuario.

Ejemplos

Sugerencia

Abra la aplicación Galería de WinUI 3 y vea los siguientes principios de accesibilidad en acción:

La aplicación WinUI 3 Gallery incluye ejemplos interactivos de la mayoría de los controles, características y funcionalidades de WinUI 3. Obtenga la aplicación de Microsoft Store u obtenga el código fuente en GitHub.