Características em Conflito

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Não atribua características de acessibilidade contraditórias ao mesmo elemento

Not for use with personal data
Best Practice Impact - Critical

O Que Verificamos

Cada *vista* - um elemento interativo, como um botão, etiqueta ou controle personalizado - pode ser atribuído *características de acessibilidade*. Esses metadados informam ao VoiceOver que tipo de elemento é e como interagir com ele. Esta regra verifica se nenhuma vista é atribuída características que se contradizem ou interferem com a navegação do VoiceOver.

Esta regra reforça uma prática recomendada definida em Características de Acessibilidade do UIKit da Apple. Você pode desativar esta regra no Painel de Controle Móvel ou ignorando a regra em testes escritos para iOS.

Resumo

  • Esta regra tem um impacto crítico para os usuários
  • As características de acessibilidade informam ao VoiceOver o que é um elemento e como interagir com ele - características conflitantes produzem um comportamento confuso ou com falhas
  • Conflitos comuns: características de função como "botão" + "link", ou características de navegação como "cabeçalho" + "ajustável"

Impacto para os Usuários

Pessoas que usam o VoiceOver e o Controle Assistido são as mais impactadas. Quando um elemento tem características conflitantes, o VoiceOver pode anunciar dois papéis simultaneamente (por exemplo, "Botão, Link"), o que é confuso e enganoso. Certas combinações de características - como "cabeçalho" e "ajustável" - também podem quebrar os gestos de navegação do VoiceOver, tornando partes da tela inacessíveis.

Confirmar Problema de Características em Conflito

  1. Ative o VoiceOver
  2. Foque no elemento
  3. Uma das seguintes situações ocorrerá:
    • Inacessível: o VoiceOver anuncia dois papéis conflitantes (como "Botão" e "Link")
    • Inacessível: um gesto de navegação do VoiceOver para de funcionar (por exemplo, usando "cabeçalho" e "ajustável" juntos)
    • Acessível: todos os papéis são distintos e os gestos de navegação funcionam como previsto

Corrigir Problemas

Para resolver um problema de Características em Conflito, garanta que cada elemento tenha apenas uma característica de função, e que todas as características atribuídas sejam compatíveis entre si.

UIKit

Para corrigir no Storyboard:

  1. Selecione o elemento com características de acessibilidade conflitantes.
  2. Certifique-se de que o Painel do Inspetor esteja visível.
  3. Selecione o **Inspetor de Identidade**.
  4. Em **Acessibilidade**, encontre a categoria **Características** e desmarque a característica conflitante.

Para corrigir no código, remova a característica conflitante. Por exemplo, se um botão estiver incorretamente atribuído como .button e .link:

button.accessibilityTraits = [.button, .link]

Mantenha apenas a característica que reflete o comportamento real do elemento. Se o elemento se comporta como um link, remova a característica de botão:

button.accessibilityTraits = .link

SwiftUI

Use .accessibility(addTraits:) e .accessibility(removeTraits:) juntos para garantir que o elemento tenha apenas as características que refletem com precisão seu comportamento. Por exemplo, se um botão imita um link, remova a característica padrão de botão e adicione a característica de link:

var body: some View {
    Button(action: { openLink() },
           label: {
        Text("Visit the website").padding()
    })
    .accessibility(addTraits: .isLink)
    .accessibility(removeTraits: .isButton)
}

React Native

É improvável que esta regra seja acionada em elementos React Native, porque accessibilityRole aceita apenas um valor. Use o valor accessibilityRole que descreve mais precisamente o comportamento esperado do elemento:

<Button
  title={'Learn more about axeDevTools'}
  accessible={true}
  accessibilityRole='link'
  onPress={goToLink}
/>

Posso ignorar esta regra?

Características Conflitantes têm um impacto Crítico para os usuários, e recomendamos tomar medidas para remediar este problema. Embora esta regra imponha uma prática recomendada da Apple, ela é muito impactante. Se um controle tiver características conflitantes, os usuários de VoiceOver podem não conseguir interagir com ele de forma alguma. Ainda assim, é possível desativar esta regra no Painel Móvel ou ignorar achados individuais nos seus testes iOS. Saiba mais sobre ignorar regras.

Recursos