Visão geral de acessibilidade

Este artigo é uma visão geral dos conceitos e tecnologias relacionados a cenários de acessibilidade para aplicativos do Windows.

Acessibilidade e seu aplicativo

Há muitas deficiências ou impedimentos possíveis, incluindo limitações na mobilidade, visão, percepção de cores, audição, fala, cognição e alfabetização. No entanto, você pode atender à maioria dos requisitos seguindo as diretrizes oferecidas aqui. Isso significa fornecer:

  • Suporte para interações de teclado e leitores de tela.
  • Suporte para personalização do usuário, como fonte, configuração de zoom (ampliação), cor e configurações de alto contraste.
  • Alternativas ou suplementos para partes da sua interface do usuário.

Os controles para XAML fornecem suporte interno ao teclado e suporte para tecnologias assistivas, como leitores de tela, que aproveitam as estruturas de acessibilidade que já oferecem suporte a aplicativos UWP, HTML e outras tecnologias de interface do usuário. Esse suporte interno permite um nível básico de acessibilidade que você pode personalizar com muito pouco trabalho, definindo apenas algumas propriedades. Se você estiver criando seus próprios componentes e controles XAML personalizados, também poderá adicionar suporte semelhante a esses controles usando o conceito de um par de automação.

Além disso, os recursos de vinculação de dados, estilo e modelo facilitam a implementação do suporte a alterações dinâmicas para exibir configurações e texto para interfaces de usuário alternativas.

Automação da Interface de Usuário

O suporte à acessibilidade vem principalmente do suporte integrado para a estrutura Microsoft UI Automation. Esse suporte é fornecido por meio de classes base e do comportamento interno da implementação de classe para tipos de controle e uma representação de interface da API do provedor de Automação da Interface do Usuário. Cada classe de controle usa os conceitos de Automação da Interface do Usuário de pares de automação e padrões de automação que relatam a função e o conteúdo do controle para clientes de Automação da Interface do Usuário. O aplicativo é tratado como uma janela de nível superior pela Automação da Interface do Usuário e, por meio da estrutura de Automação da Interface do Usuário, todo o conteúdo relevante para acessibilidade dentro dessa janela do aplicativo está disponível para um cliente de Automação da Interface do Usuário. Para obter mais informações sobre a automação da interface do usuário, consulte Visão geral da automação da interface do usuário.

Tecnologia adaptativa

Muitas necessidades de acessibilidade do usuário são atendidas por produtos de tecnologia assistiva instalados pelo usuário ou por ferramentas e configurações fornecidas pelo sistema operacional. Isso inclui funcionalidades como leitores de tela, ampliação de tela e configurações de alto contraste.

Os produtos de tecnologia assistiva incluem uma ampla variedade de software e hardware. Esses produtos funcionam por meio da interface de teclado padrão e estruturas de acessibilidade que relatam informações sobre o conteúdo e a estrutura de uma interface do usuário para leitores de tela e outras tecnologias assistivas. Exemplos de produtos de tecnologia assistiva incluem:

  • O Teclado Virtual, que permite que as pessoas usem um ponteiro no lugar de um teclado para digitar texto.
  • Software de reconhecimento de voz, que converte palavras faladas em texto digitado.
  • Leitores de tela, que convertem texto em palavras faladas ou outras formas, como Braille.
  • O leitor de tela do Narrador, que faz parte especificamente do Windows. O Narrator tem um modo de toque, que pode executar tarefas de leitura de tela processando gestos de toque, para quando não há teclado disponível.
  • Programas ou configurações que ajustam a tela ou áreas dela, por exemplo, temas de alto contraste, configurações de pontos por polegada (dpi) da tela ou a ferramenta Lupa.

Os aplicativos que têm bom suporte a teclado e leitor de tela geralmente funcionam bem com vários produtos de tecnologia assistiva. Em muitos casos, um aplicativo UWP funciona com esses produtos sem modificação adicional de informações ou estrutura. No entanto, convém modificar algumas configurações para uma experiência de acessibilidade ideal ou para implementar suporte adicional.

Algumas das opções que você pode usar para testar cenários básicos de acessibilidade com tecnologias assistivas estão listadas em Teste de acessibilidade.

Suporte ao leitor de tela e informações básicas de acessibilidade

Os leitores de tela fornecem acesso ao texto em um aplicativo renderizando-o em algum outro formato, como idioma falado ou saída em Braille. O comportamento exato de um leitor de tela depende do software e da configuração do usuário dele.

Por exemplo, alguns leitores de tela leem toda a interface do usuário do aplicativo quando o usuário inicia ou alterna para o aplicativo que está sendo visualizado, o que permite que o usuário receba todo o conteúdo informativo disponível antes de tentar navegar nele. Alguns leitores de tela também leem o texto associado a um controle individual quando ele recebe foco durante a navegação por guias. Isso permite que os usuários se orientem enquanto navegam entre os controles de entrada de um aplicativo. O Narrador é um exemplo de leitor de tela que fornece ambos os comportamentos, dependendo da escolha do usuário.

As informações mais importantes de que um leitor de tela ou qualquer outra tecnologia assistiva precisa para ajudar os usuários a entender ou navegar em um aplicativo é um nome acessível para as partes do elemento do aplicativo. Em muitos casos, um controle ou elemento já tem um nome acessível que é calculado a partir de outros valores de propriedade que você forneceu de outra forma. O caso mais comum em que você pode usar um nome já calculado é com um elemento que oferece suporte e exibe texto interno. Para outros elementos, às vezes você precisa levar em conta outras maneiras de fornecer um nome acessível seguindo as práticas recomendadas para a estrutura do elemento. E, às vezes, você precisa fornecer um nome que seja explicitamente destinado como o nome acessível para acessibilidade do aplicativo. Para obter uma lista de quantos desses valores calculados funcionam em elementos comuns da interface do usuário e para obter mais informações sobre nomes acessíveis em geral, consulte Informações básicas de acessibilidade.

Há várias outras propriedades de automação disponíveis (incluindo as propriedades do teclado descritas na próxima seção). No entanto, nem todos os leitores de tela oferecem suporte a todas as propriedades de automação. Em geral, você deve definir todas as propriedades de automação apropriadas e testar para fornecer o suporte mais amplo possível para leitores de tela.

Suporte de teclado

Para fornecer um bom suporte ao teclado, você deve garantir que cada parte do seu aplicativo possa ser usada com um teclado. Se o seu aplicativo usa principalmente os controles padrão e não usa nenhum controle personalizado, você já está na maior parte do caminho lá. O modelo de controle XAML básico fornece suporte interno ao teclado, incluindo navegação por guias, entrada de texto e suporte específico de controle. Os elementos que servem como contêineres de layout (como painéis) usam a ordem de layout para estabelecer uma ordem de tabulação padrão. Essa ordem geralmente é a ordem de tabulação correta a ser usada para uma representação acessível da interface do usuário. Se você usar os controles ListBox e GridView para exibir dados, eles fornecerão navegação interna com tecla de seta. Ou, se você usar um controle Button , ele já manipula as teclas Barra de espaço ou Enter para ativação do botão.

Para obter mais informações sobre todos os aspectos do suporte ao teclado, incluindo a ordem de tabulação e a ativação ou navegação baseada em teclas, consulte Acessibilidade do teclado.

Mídia e legendas

Normalmente, você exibe mídia audiovisual por meio de um objeto MediaElement . Você pode usar APIs MediaElement para controlar a reprodução de mídia. Para fins de acessibilidade, forneça controles que permitam aos usuários reproduzir, pausar e parar a mídia conforme necessário. Às vezes, a mídia inclui componentes adicionais destinados à acessibilidade, como legendas ou faixas de áudio alternativas que incluem descrições narrativas.

Texto acessível

Três aspectos principais do texto são relevantes para a acessibilidade:

  • As ferramentas devem determinar se o texto deve ser lido como parte de uma travessia de sequência de tabulação ou apenas como parte de uma representação geral do documento. Você pode ajudar a controlar essa determinação escolhendo o elemento apropriado para exibir o texto ou ajustando as propriedades desses elementos de texto. Cada elemento de texto tem uma finalidade específica, e essa finalidade geralmente tem uma função de Automação da Interface do Usuário correspondente. Usar o elemento errado pode resultar em relatar a função errada para a Automação da Interface do Usuário e criar uma experiência confusa para um usuário de tecnologia assistiva.
  • Muitos usuários têm limitações de visão que dificultam a leitura do texto, a menos que ele tenha contraste adequado contra o plano de fundo. Como isso afeta o usuário não é intuitivo para designers de aplicativos que não têm essa limitação de visão. Por exemplo, para usuários daltônicos, escolhas de cores ruins no design podem impedir que alguns usuários consigam ler o texto. As recomendações de acessibilidade que foram feitas originalmente para conteúdo da Web definem padrões de contraste que também podem evitar esses problemas em aplicativos. Para obter mais informações, consulte Requisitos de texto acessível.
  • Muitos usuários têm dificuldade para ler textos que são simplesmente muito pequenos. Você pode evitar esse problema tornando o texto na interface do usuário do seu aplicativo razoavelmente grande em primeiro lugar. No entanto, isso é um desafio para aplicativos que exibem grandes quantidades de texto ou texto intercalado com outros elementos visuais. Nesses casos, certifique-se de que o aplicativo interaja corretamente com os recursos do sistema que podem aumentar a exibição, para que qualquer texto nos aplicativos seja ampliado junto com ele. (Alguns usuários alteram os valores de dpi como uma opção de acessibilidade. Essa opção está disponível em Aumentar as coisas na tela em Facilidade de Acesso, que redireciona para uma interface do usuário do Painel de Controle para Exibição de Aparência e Personalização / .)

Suporte a temas de alto contraste

Os controles de interface do usuário usam uma representação visual que é definida como parte de um dicionário de temas de recursos XAML. Um ou mais desses temas são usados especificamente quando o sistema é definido para alto contraste. Quando o usuário alterna para alto contraste, pesquisando o tema apropriado em um dicionário de recursos dinamicamente, todos os controles da interface do usuário também usarão um tema de alto contraste apropriado. Apenas certifique-se de que você não desabilitou os temas especificando um estilo explícito ou usando outra técnica de estilo que impeça que os temas de alto contraste sejam carregados e substituam suas alterações de estilo. Para obter mais informações, consulte Temas de alto contraste.

Design para interface do usuário alternativa

Ao projetar seus aplicativos, considere como eles podem ser usados por pessoas com mobilidade, visão e audição limitadas. Como os produtos de tecnologia assistiva fazem uso extensivo da interface do usuário padrão, é particularmente importante fornecer um bom suporte a teclado e leitor de tela, mesmo que você não faça outros ajustes para acessibilidade.

Em muitos casos, você pode transmitir informações essenciais usando várias técnicas para ampliar seu público. Por exemplo, você pode realçar informações usando informações de ícone e cores para ajudar os usuários daltônicos e exibir alertas visuais junto com efeitos sonoros para ajudar os usuários surdos ou com deficiência auditiva.

Se necessário, você pode fornecer elementos de interface do usuário alternativos e acessíveis que removem completamente elementos e animações não essenciais e fornecem outras simplificações para simplificar a experiência do usuário. O exemplo de código a seguir demonstra como exibir uma instância UserControl no lugar de outra, dependendo de uma configuração de usuário.

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();
    }
}

Verificação e publicação

Para saber mais sobre declarações de acessibilidade e publicar seu aplicativo, veja Acessibilidade na Loja.

Observação

Declarar o aplicativo como acessível só é relevante para a Microsoft Store.

Suporte à tecnologia assistiva em controles personalizados

Ao criar um controle personalizado, recomendamos que você também implemente ou estenda uma ou mais subclasses AutomationPeer para fornecer suporte de acessibilidade. Em alguns casos, desde que você use a mesma classe de mesmo nível que foi usada pela classe de controle base, o suporte de automação para sua classe derivada é adequado em um nível básico. No entanto, você deve testar isso, e a implementação de um par ainda é recomendada como uma prática recomendada para que o par possa relatar corretamente o nome da classe de sua nova classe de controle. A implementação de um par de automação personalizado tem algumas etapas envolvidas. Para obter mais informações, consulte Pares de automação personalizados.

Suporte a tecnologia assistiva em aplicativos que oferecem suporte à interoperabilidade XAML/Microsoft DirectX

O conteúdo do Microsoft DirectX hospedado em uma interface do usuário XAML (usando SwapChainPanel ou SurfaceImageSource) não é acessível por padrão. O exemplo de interoperabilidade XAML SwapChainPanel DirectX mostra como criar pares de Automação da Interface do Usuário para o conteúdo DirectX hospedado. Essa técnica torna o conteúdo hospedado acessível por meio da Automação da Interface do Usuário.

Exemplos

Dica

Abra o aplicativo WinUI 3 Gallery e veja os seguintes princípios de acessibilidade em ação:

O aplicativo Galeria da WinUI 3 inclui exemplos interativos da maioria dos controles, recursos e funcionalidades da WinUI 3. Obtenha o aplicativo na Microsoft Store ou o código-fonte no GitHub