Acessibilidade no iOS: VoiceOver

O uso do VoiceOver para tornar aplicativos mais acessíveis

Inara Takashi
Academy@EldoradoCPS
6 min readJul 2, 2020

--

Logo Acessibilidade iOS
Acessibilidade no iOS. Fonte: Apple.

Garantir acessibilidade na sua aplicação é proporcionar igualdade de acesso e oportunidade a cerca de 1 bilhão de pessoas que vivem com algum tipo de deficiência, isso significa uma em cada sete pessoas no mundo.

As necessidades especiais mais comuns que podem influenciar o uso de uma aplicação são cegueira e baixa visão, daltonismo, deficiências cognitivas, surdez e restrição das habilidades motoras. Pensando nisso, a Apple oferece uma série de recursos destinados para estes públicos em seus dispositivos. Este artigo se aprofunda nas funcionalidades do VoiceOver mas você pode conhecer melhor todos os recursos aqui.

VoiceOver

O VoiceOver é um leitor de tela ativado por gestos que permite que usuários com deficiência visual ouçam e interajam com o conteúdo da tela, ou seja, ele responde a gestos e comunica de forma audível ao usuário o que está presente na tela ou o que o usuário seleciona.

Basta habilitar em Ajustes → Acessibilidade → VoiceOver→ Ativar ou selecionar o VoiceOver em Atalhos de Acessibilidade e você acessa o recurso a partir de qualquer lugar do iOS com três cliques no botão de Início (ou botão lateral no iPhone X ou posterior).

Na tela de ativação também é possível fazer vários ajustes como velocidade da fala e o tom da voz, por exemplo. Com o VoiceOver é possível ouvir a descrição de tudo o que acontece na tela: a carga da bateria, quem está ligando ou até de qual app seu dedo está em cima.

Como usar o VoiceOver?

O VoiceOver possui gestos predeterminados que facilitam a navegação no aplicativo, alguns dos gestos mais comuns são:

  • Um toque: descreve o item selecionado
  • Dois toques: ativa o item selecionado
  • Deslizar 3 dedos na tela: navegação entre páginas e listas (Scroll)
  • Deslizar o dedo para direita ou esquerda: navega entre os elementos da tela horizontalmente
  • Deslizar 2 dedos para cima ou para baixo: navega entre os elementos da tela verticalmente

Você tem acesso a lista completa de comandos do VoiceOver em Aprenda os gestos do VoiceOver no iPhone.

VoiceOver e Atributos de Acessibilidade

Os atributos de acessibilidade são os componentes principais que devem ser implementados para garantir a acessibilidade da aplicação. Esses atributos fornecem ao VoiceOver as informações necessárias a serem transmitidas ao usuário por meio da leitura em voz alta.

O primeiro passo é determinar se o elemento é ou não acessível, por meio do valor booleano:

isAccessibilityElement:Bool — No caso do VoiceOver ele determina se um elemento da tela deve ou não ser lido.

Um atributo de acessibilidade possui cinco propriedades principais:

Label

accessibilityLabel:String? — refere-se ao nome do elemento.

É a string lida pelo VoiceOver quando este encontra um elemento acessível. Recomenda-se que seja um nome sucinto, focando na funcionalidade do elemento. O valor padrão para esta propriedade é nulo, a menos que o destinatário seja um UIKit control, neste caso o valor da propriedade será o título do control. Isso significa que, na maioria dos elementos, não é necessário definir este atributo pois o valor será o próprio conteúdo do control. Entretanto, se um elemento não possuir uma descrição adequada, será necessário sua configuração. Por exemplo, um botão de “Reproduzir música” pode exibir um ícone que mostra ao usuários sua função. Para estar acessível, o botão deve possuir um accessibilityLabel “Reproduzir” para que o VoiceOver possa transmitir a informação correta ao usuário com deficiência.

Note que o nome do elemento (accessibilityLabel) nunca deve incluir o tipo do control (como “botão”, por exemplo), porque essas informações já estão contidas nos traços associados ao elemento acessível.

Traits

accessibilityTraits:UIAccessibilityTrait — refere-se a forma de interação com o elemento.

Descrevem o estado, o comportamento ou o uso do elemento. O valor padrão para essa propriedade é nulo, a menos que o receptor seja um UIKit control, nesse caso, o valor é o conjunto padrão de características associadas ao controle. Um exemplo seria adicionar a característica “está selecionado” a um botão.

Value

accessibilityValue:String? — descreve o valor do elemento.

Essa deve ser a representação em texto do valor ou conteúdo de um control. Novamente, o valor padrão para essa propriedade é nulo, a menos que o receptor seja um UIKit control, nesse caso, o valor da propriedade representa o valor do controle, quando difere do label. Por exemplo, em um Slider o valor atual pode ser: 50 em 100. Outro exemplo seria um elemento de acessibilidade que represente um Text Field que possui como label “Mensagem”, mas seu valor é o texto escrito atualmente dentro do Text Field.

Hint

accessibilityHint:String? — descreve, de forma mais detalhada, como o usuário pode interagir com um elemento.

O VoiceOver lê esse atributo de um elemento por último após uma breve pausa. Deve ser usado para fornecer informações adicionais sobre qual será o resultado da execução da ação desse elemento quando os atributos accessibilityLabel e accessibilityValue não são suficientes para deixar claro a forma de interação.

Recomenda-se começar com um verbo que nomeie os resultados da ação, como “Reproduz a música” ou “Compra o item” em uma frase muito breve. Deve-se evitar frases que soem como um comando ao invés de uma orientação, como “Reproduzir a música” ou “Comprar o item”. Não se deve repetir o tipo de ação. Por exemplo, não implementar esse atributo como “Toque para reproduzir a música” pois isso se torna redundante se os outros atributos foram implementados corretamente.

Frame

accessibilityFrame: CGRect— refere-se a localização do elemento na tela (informar onde ele está).

O VoiceOver fala o conteúdo do CGRect. Por padrão, seu valor é o frame da view na qual o elemento se encontra. Recomenda-se que você deve definir essa propriedade para um elemento acessível que represente um objeto que não seja uma subclasse do UIView, porque as coordenadas da tela desse objeto ainda não são conhecidas.

VoiceOver mais eficiente

Se você deseja melhorar a experiência de usuários com deficiências visuais no uso do VoiceOver, uma alternativa é o uso de Custom Rotors. Eles podem ajudar o usuário a navegar em interfaces e situações mais complexas da aplicação.

O rotor modifica a forma de explorar o conteúdo presente na tela, selecionando itens com uma lógica diferente da padrão. Além disso, pode adicionar filtros e atalhos úteis e personalizados à sua aplicação.

Demonstração visual do uso do custom rotors
Custom Rotors WWDC2020. Fonte: Apple.

Para habilita-lo, com o VoiceOver ativado, deve-se girar os dois dedos na tela, como instrui a figura, até selecionar a opção desejada do rotor. Depois, deslizando o dedo para cima move para o próximo item da opção selecionada do rotor e deslizando o dedo para baixo move para o item anterior.

O uso desse rotor personalizado e a lógica implementada nele podem ser os mais diversos, dependendo da sua aplicação. Um bom exemplo de uso desse recurso é sua configuração na App Store, onde o usuário pode ativar a opção de Títulos no rotor, por exemplo, permitindo que ele pule de título em título até facilmente encontrar o conteúdo desejado, sem que precise percorrer todas as informações da tela.

Considerações Finais

É muito importante salientar que todos os recursos de acessibilidade já estão presentes no sistema operacional dos dispositivos Apple, dessa forma, o trabalho do programador para tornar o aplicativo acessível não é algo complexo. A maioria dos componentes do UIKit predefinem esses atributos para sua aplicação, você só precisa fornecer os detalhes para tornar a experiência do usuário ainda melhor.

--

--