Partilhar 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 na mobilidade, visão, perceção de cores, audição, fala, cognição e alfabetização. No entanto, você pode abordar a maioria dos requisitos seguindo as diretrizes oferecidas aqui. Isto significa fornecer:

  • Suporte para interações com 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 de teclado interno e suporte para tecnologias assistenciais, 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. Este suporte integrado permite um nível básico de acessibilidade que pode personalizar com muito pouco trabalho, definindo apenas um punhado de 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 de suporte para alterações dinâmicas nas configurações de exibição e texto para interfaces do usuário alternativas.

Automação da 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 controlo utiliza os conceitos de pares de automação e padrões de automação para comunicar a função e o conteúdo do controlo aos clientes de Automação da Interface do Utilizador. 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 nessa janela do aplicativo está disponível para um cliente de Automação da Interface do Usuário. Para saber mais sobre a automação da interface do usuário, veja Visão geral da automação da interface do usuário.

Tecnologia assistiva

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 assistenciais. Exemplos de produtos de tecnologia assistiva incluem:

  • O Teclado no Ecrã, que permite que as pessoas utilizem um ponteiro em vez de um teclado para escrever 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 é especificamente parte 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 definições que ajustam o ecrã ou áreas do mesmo, por exemplo, temas de alto contraste, definições de pontos por polegada (dpi) do ecrã ou a ferramenta Lupa.

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, você pode querer modificar algumas configurações para uma experiência de acessibilidade ideal ou para implementar suporte adicional.

Algumas das opções que pode usar para testar cenários básicos de acessibilidade com tecnologias assistivas estão listadas na secção sobre testes 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 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 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 ecrã ou qualquer outra tecnologia de apoio necessita para ajudar os utilizadores a compreender ou navegar numa aplicação são um nome acessível para os elementos da aplicação. 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 suporta 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 suportam 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 de 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 de teclado interno, 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 ListBox e controles de GridView para exibir dados, eles fornecerão navegação interna por tecla de seta. Ou se você usar um Button controle, ele já lida com as teclas Barra de espaço ou Enter para ativação do botão.

Para obter mais informações sobre todos os aspetos 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 parar a mídia conforme necessário. Às vezes, a mídia inclui componentes adicionais que se destinam à acessibilidade, como legendas ou faixas de áudio alternativas que incluem descrições narrativas.

Texto acessível

Três aspetos 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ções 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 de texto, a menos que ele 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, más escolhas de cores no design podem impedir que alguns usuários sejam capazes de ler o texto. As recomendações de acessibilidade que foram originalmente feitas para conteúdo da Web definem padrões de contraste que podem evitar esses problemas em aplicativos também. Para obter mais informações, consulte Requisitos de texto acessível.
  • Muitos usuários têm dificuldade em ler texto que é simplesmente muito pequeno. Você pode evitar esse problema fazendo com que o texto na interface do utilizador do seu aplicativo seja razoavelmente grande desde o início. 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 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 utilizadores alteram os valores de dpi como uma opção de acessibilidade. Essa opção está disponível em Tornar as coisas no ecrã maiores em Facilidade de Acesso, que redireciona para um Painel de Controlo para Aparência e Personalização / Ecrã.)

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 de um dicionário de recursos dinamicamente, todos os seus controles de interface do usuário também usarão um tema de alto contraste apropriado. Apenas certifique-se de que não desativou 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 saber mais, veja 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 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 alternativos e acessíveis da interface do usuário que removem completamente elementos e animações não essenciais e fornecer outras simplificações para simplificar a experiência do usuário. O exemplo de código a seguir demonstra como exibir um UserControl instância no lugar de outro, 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 da sua aplicação, consulte Acessibilidade na Loja.

Observação

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

Suporte de tecnologia assistiva em controles personalizados

Quando você cria 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 uses a mesma classe equivalente que foi utilizada pela classe de controlo base, o suporte de automação para a tua classe derivada é adequado a um nível fundamental. 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 da sua nova classe de controle. A implementação de um par de automação personalizado envolve algumas etapas. Para mais informações, veja Pares de automação personalizados.

Suporte de tecnologia assistiva em aplicativos que suportam 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 SwapChainPanel XAML 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

Sugestão

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

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