Compartilhar via


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

Existem muitas deficiências ou deficiências possíveis, incluindo limitações de 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 interface do usuário.

Os controles para XAML fornecem suporte interno ao teclado e suporte a tecnologias adaptativas, como leitores de tela, que aproveitam as estruturas de acessibilidade que já dão suporte a aplicativos UWP, HTML e outras tecnologias de interface do usuário. Esse suporte integrado 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 para alterações dinâmicas nas configurações de exibição e texto para interfaces de usuário alternativas.

Automação de interface do usuário

O suporte à acessibilidade vem principalmente do suporte integrado para a estrutura de automação da interface do usuário da Microsoft. 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 por 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 Automação da Interface do Usuário, consulte Visão geral de 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 Narrador 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 suas áreas, por exemplo, temas de alto contraste, configurações de pontos por polegada (dpi) da tela ou a ferramenta Lupa.

Os aplicativos que têm um 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, talvez você queira modificar algumas configurações para obter a experiência de acessibilidade ideal ou implementar suporte adicional.

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

Suporte a leitores 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 linguagem falada ou saída em Braille. O comportamento exato de um leitor de tela depende do software e da configuração do usuário.

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 exibido, 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 o foco durante a navegação na guia. 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.

A informação mais importante que um leitor de tela ou qualquer outra tecnologia assistencial 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 dá 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 explicitamente destinado a ser 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 dão 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 todas as partes do seu aplicativo possam ser usadas 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. O modelo de controle XAML básico fornece suporte interno ao teclado, incluindo navegação por guias, entrada de texto e suporte específico ao 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 por 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 ordem de tabulação e 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 interromper 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 passagem 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 Automação da Interface do Usuário e criar uma experiência confusa para um usuário de tecnologia assistencial.
  • Muitos usuários têm limitações de visão que dificultam a leitura do texto, a menos que tenha contraste adequado com 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 originalmente feitas 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 em 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, verifique se o aplicativo interage corretamente com os recursos do sistema que podem aumentar a exibição, para que qualquer texto nos aplicativos seja dimensionado 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 definida como parte de um dicionário de recursos XAML de temas. 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 de interface do usuário também usarão um tema de alto contraste apropriado. Apenas certifique-se de não ter desabilitado 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 assistencial 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 destacar informações usando informações de ícone e cor para ajudar os usuários daltônicos e pode 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 de 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 obter mais informações sobre declarações de acessibilidade e publicação de seu aplicativo, consulte Acessibilidade na Loja.

Observação

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

Suporte à tecnologia assistencial 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 pares 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 à tecnologia assistencial em aplicativos que dão 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 pode ser acessado por padrão. O exemplo de interoperabilidade do DirectX XAML SwapChainPanel mostra como criar pares de Automação da Interface do Usuário para o conteúdo do DirectX hospedado. Essa técnica torna o conteúdo hospedado acessível por meio de Automação da Interface do Usuário.

Exemplos

Dica

Abra o aplicativo Galeria do WinUI 3 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