Características em Conflito
Não atribua características de acessibilidade contraditórias ao mesmo elemento
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
- Ative o VoiceOver
- Foque no elemento
- 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:
- Selecione o elemento com características de acessibilidade conflitantes.
- Certifique-se de que o Painel do Inspetor esteja visível.
- Selecione o **Inspetor de Identidade**.
- 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 = .linkSwiftUI
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
- Documentação do Desenvolvedor Apple
