Tornando seu Aplicativo iOS Acessível: Práticas Inclusivas com Swift e Interface do Usuário
- #Swift
Tudo bem galera da DIO?
Você já estudou como aplicar acessibilidade em seus aplicativos? Neste meu novo artigo, na Santander Dev Week, aproveitei desta temática de Desenvolvimento Mobile para apresentar a muitos a importância da acessibilidade no mundo dev, neste caso, especificamente em aplicativos, usando o sistema operacional iOS e a linguagem de programação Swift.
Ao decorrer da leitura você conseguirá aprender as ferramentas e o grande impacto que têm nas suas aplicações o fato de haver ou não acessibilidade.
O artigo está dividido em:
- Introdução à Acessibilidade em Aplicativos iOS
- Diretrizes e Padrões de Acessibilidade iOS
- Visão Geral do Swift no Desenvolvimento Mobile Acessível
- VoiceOver: Tornando seu Aplicativo Amigável para Leitores de Tela
- Considerações Finais
- Referências
Introdução à Acessibilidade em Aplicativos iOS
De acordo com Da Silva, Damaceno e Braga (2015), no Brasil há números expressivos de pessoas com algum tipo de deficiência visual, sendo importante citar que cada pessoa possui uma intensidade.
Diante disso, para abranger o alcance das aplicações móveis para o maior número de pessoas, se faz necessário utilizar de ferramentas de acessibilidade.
Demonstrar a dedicação da empresa em fornecer experiências iguais para todos os usuários, independentemente da capacidade, abordar a inclusão e a diversidade também aborda questões performáticas.
Filho e cols. (2002) definiram acessibilidade como a capacidade de indivíduos com deficiência ou mobilidade limitada de utilizar vários espaços de forma independente e segura, incluindo espaços físicos e digitais, como transporte e ambientes.
Ambos os espaços, físicos e digitais, compartilham desafios comuns quando se trata de incluir pessoas com necessidades especiais, mesmo com suas diferenças.
A própria Apple, desenvolvedora do iOS e do Swift, reconhece que esses indivíduos utilizam vários recursos para personalizar suas interações com seus dispositivos.
Seja ajustando a transparência, empregando o VoiceOver ou ampliando o tamanho do texto, os usuários podem personalizar sua experiência para atender às suas necessidades.
Um aplicativo acessível suporta essa personalização por meio de seu design e proporciona a todos uma ótima experiência do usuário, independentemente de suas capacidades ou de como utilizam seus dispositivos.
As duas funcionalidades de acessibilidade mais utilizadas envolvem rótulos de elementos e a ordem de navegação do VoiceOver. Além disso, opções de paleta de cores, suporte ao modo escuro e legendas de mídia são todas boas práticas.
Diretrizes e Padrões de Acessibilidade iOS
O site do desenvolvedor tem a documentação de informações úteis chamado Human Interface Guidelines, onde você encontrará as melhores práticas e orientações necessárias para criar uma experiência de alto nível em qualquer plataforma Apple.
Ela oferece conselhos valiosos para garantir que os aplicativos para dispositivos iOS atendam aos padrões de acessibilidade para usuários com limitações visuais, auditivas, motoras e outras.
Removendo todas as barreiras desnecessárias, os desenvolvedores de aplicativos podem projetar com sucesso aplicativos que fornecem uma experiência de usuário abrangente e permitem que todos os indivíduos utilizem facilmente as funções do aplicativo aderindo a esses princípios.
Dentre as diversas opções fornecidas pela desenvolvedora, as diretrizes das mais utilizadas são:
Compatibilidade com VoiceOver
Torna-se necessário fornecer descrições claras e concisas para os elementos da interface, como botões, imagens, controles, etc.
Além disso, é importante verificar a ordem de navegação do VoiceOver para garantir que a sequência seja lógica e fácil de entender a todos os usuários do aplicativo.
Para garantir que o VoiceOver anuncie corretamente em ordem os elementos, utilize etiquetas apropriadas para cada elemento interativo e os agrupe.
Tamanho de Fonte Dinâmico (Dynamic Type)
Com foco em pessoas com dificuldades visuais, é interessante oferecer suporte ao recurso Dynamic Type, permitindo que o texto se ajuste de acordo com as preferências de quem irá utilizar.
Evite fixar o tamanho da fonte em valores específicos, optando por usar tamanhos de fonte escaláveis.
Contraste e Legibilidade
Para facilitar a leitura dos usuários, garanta que o aplicativo tenha um contraste adequado entre o texto e o plano de fundo.
Utilize fontes legíveis e evite combinações de cores que possam dificultar a visualização para usuários com deficiências visuais.
Legendas e Transcrições
Incluir legendas em vídeos e transcrições em áudios torna-os acessíveis a usuários surdos ou com dificuldades auditivas.
Navegação Simplificada
A funcionalidade fornece mecanismos de navegação alternativos, como gestos personalizados ou controle por voz, para usuários com deficiências motoras.
Adequação para Todos os Tamanhos de Tela
Verifique se a interface do aplicativo se adapta a diferentes tamanhos de tela, desde dispositivos mais antigos até os mais recentes.
Botões e Elementos Interativos
Certifique-se de que os botões e elementos interativos possuam uma área de toque adequada para facilitar a interação.
Testes de Acessibilidade
Realize testes de acessibilidade durante todo o processo de desenvolvimento para identificar e corrigir problemas em tempo hábil.
Criar aplicativos acessíveis e inclusivos no desenvolvimento iOS é fundamental para o ambiente digital.
Ao seguir essas diretrizes e padrões, podemos garantir que todos os usuários, independentemente de suas habilidades e necessidades, possam ter uma experiência positiva ao usar aplicativos em vários dispositivos.
Visão Geral do Swift no Desenvolvimento Mobile Acessível
Swift, linguagem de programação da Apple para plataformas Apple, substituiu Objective-C. Na verdade, é uma linguagem de programação orientada a objetos, apresentada como funcional, mas carregada de programação genérica. [1]
Swift não apenas adotou as partes positivas do Objective C, mas também novos recursos que facilitam a escrita e implementação de código. [2]
Vantagens:
- Alta velocidade - atinge o nível de C++;
- Fácil de ler. Assemelha-se ao inglês em lógica e também possui sintaxe e código simples;
- Maior segurança quando comparado ao Objective C;
- Maneira simplificada de corrigir bugs no código;
Desvantagens:
- Ele evolui e muda, então pode desacelerar - você precisa aprender e aplicar informações sobre atualizações;
Composto por ferramentas que ajudam a construir interfaces de usuário, o SwiftUI é um framework lançado pela Apple em 2019.
Grosso modo, SwiftUI é uma plataforma de criação que oferece ferramentas recentes que ajudam a desenvolver aplicativos. Já o Swift é uma língua de programação que é sempre atualizada com novas versões.
O SwiftUI inclui assistência de acessibilidade pré-existente, não havendo necessidade de esforço adicional para ativar esses recursos de acessibilidade padrão.
A estrutura analisa automaticamente componentes familiares, como exibições de navegação, listas, campos de texto, controles deslizantes e botões, entre outros, e atribui rótulos e valores básicos de acessibilidade como configuração padrão.
Além disso, o SwiftUI oferece uma gama de recursos para aprimorar a acessibilidade do seu aplicativo. Para determinar quais áreas precisam ser aprimoradas, você pode experimentar os recursos de acessibilidade do seu aplicativo, como VoiceOver, Controle por Voz e Controle Assistivo.
Como alternativa, você pode buscar informações de usuários que utilizam esses recursos com frequência para obter um feedback valioso sobre a acessibilidade do seu aplicativo.
VoiceOver e Acessibilidade de Elementos de Interface
A ferramenta de acessibilidade embutida no iOS, permite que usuários com algum tipo de deficiência visual interajam com os aplicativos através de comandos de voz.
No exemplo abaixo, tornamos um botão acessível usando o atributo accessibilityLabel:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let myButton = UIButton(type: .system)
myButton.setTitle("Clique Aqui", for: .normal)
myButton.accessibilityLabel = "Botão que executa ação X"
// Lembrando que “X” é alterado para informar a real função do botão
}
}
Acessibilidade de Cores
Para garantir a questão visual das cores, devemos nos atentar a quais tons estão sendo utilizados nos aplicativos para que sejam acessíveis para todos os usuários.
No exemplo abaixo usamos a função UIColor para criar cores com base nas diretrizes de acessibilidade:
import UIKit
class AcessibilidadeCoresViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Nessa parte criamos uma cor de fundo com base na relação de contraste
let backgroundColor = UIColor { (traitCollection) -> UIColor in
if traitCollection.userInterfaceStyle == .dark {
return UIColor.black
} else {
return UIColor.white
}
}
self.view.backgroundColor = backgroundColor
}
}
Acessibilidade de Tamanhos de Fonte
Também é importante permitir que os usuários aumentem o tamanho da fonte para uma melhor legibilidade.
No exemplo abaixo tornamos um rótulo acessível ao tamanho da fonte dinâmica:
import UIKit
class AcessibilidadeFonteViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let myLabel = UILabel()
myLabel.text = "Texto de exemplo"
myLabel.font = UIFont.preferredFont(forTextStyle: .body)
myLabel.adjustsFontForContentSizeCategory = true
// .adjustsFontForContentSizeCategory habilita a funcionalidade para que o tamanho do texto seja
// ajustado automaticamente
}
}
Acessibilidade de Instruções de Voz Personalizadas
Podemos também fornecer instruções de voz personalizadas no nosso aplicativo acessível.
Neste exemplo abaixo utiliza-se o protocolo UIAccessibilityReadingContent:
import UIKit
class AcessibilidadeInstrucoesViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let myInstruction = "Toque duas vezes para iniciar."
UIAccessibility.post(notification: .announcement, argument: myInstruction)
// UIAccessibility.post(notification:argument:) é utilizado para notificar o sistema sobre mudanças de
// acessibilidade e também pode ser utilizado para fornecer informações para tecnologias assistivas como
// VoiceOver.
// .announcement indica o fato de que a notificação deve ser de forma audível, e o myInstruction seria o
// que deve ser anunciado
}
}
Em poucas palavras, Swift é uma linguagem acessível com uma interface amigável, tornando-a uma escolha ideal para desenvolvedores.
Com alicerces seguros e foco na inclusão, a linguagem possibilita a criação de aplicativos inovadores que atendem a um público amplo, fomentando a igualdade de acesso à tecnologia e promovendo a inclusão digital.
Sua sintaxe é clara e seus recursos incorporam acessibilidade integrada, permitindo uma abordagem versátil para o desenvolvimento.
VoiceOver: Tornando seu Aplicativo Amigável para Leitores de Tela
O principal recurso para a acessibilidade para aplicativos iOS trata-se do VoiceOver.
Em uma pesquisa realizada em torno do VoiceOver por Leporini, Buzzi e Buzzi, com 55 pessoas, puderam afirmar com os resultados que a funcionalidade é um grande avanço no ramo e que realmente torna aplicativos acessíveis a pessoas com dificuldades visuais, apesar dos defeitos.
Desta forma, iremos aprofundar nesta seção, como realizar a implementação em seus códigos.
O VoiceOver é uma tecnologia de acessibilidade que lê em voz alta o conteúdo da interface do usuário para usuários com deficiência visual.
Para adicionar a tecnologia em seu aplicativo Swift, a opção mais comum é usando o UIAccessibility fornecida pelo iOS.
Aqui estão os passos básicos para adicionar o VoiceOver em seu código Swift:
Adicionar etiquetas de acessibilidade
É necessário fornecer rótulos de acessibilidade para elementos da interface do usuário, como botões, rótulos, campos de texto e etc.
Esses rótulos de acessibilidade são essenciais para que as tecnologias assistivas leiam o conteúdo corretamente.
Exemplo:
Button(action: {
// Código da ação do botão
}, label: {
Text("Clique aqui")
})
.accessibility(label: Text("Botão de exemplo"))
Utilizar títulos significativos
Ao projetar interfaces, forneça títulos significativos para diferentes seções e páginas do seu aplicativo, fazer isso ajudará os usuários a entenderem a estrutura e a navegarem facilmente.
Exemplo:
struct ContentView: View {
var body: some View {
VStack {
Text("Tela de boas-vindas")
.font(.title)
.accessibility(label: Text("Tela de boas-vindas"))
}
}
}
Adicionar dicas de acessibilidade (“hints”)
Ao utilizar o recurso de "hints", você fornece informações adicionais sobre como os elementos interativos devem ser usados.
Exemplo:
Button(action: {
// Código da ação do botão que funciona com dois toques
}, label: {
Text("Clique aqui")
})
.accessibility(hint: Text("Toque duas vezes para ativar"))
Ações personalizadas
Use ações personalizadas para permitir que os usuários com deficiência visual interajam com seus elementos de interface do usuário de forma personalizada.
Exemplo:
import SwiftUI
struct ContentView: View {
@State private var counter = 0
var body: some View {
VStack {
Text("Contador: \(counter)")
.font(.title)
.padding()
Button(action: {
incrementCounter()
}, label: {
Text("Incrementar")
})
.padding()
.accessibility(label: Text("Botão para incrementar o contador"))
.accessibilityAction {
// Ação personalizada especificamente para a utilização do VoiceOver
incrementCounter()
}
}
}
private func incrementCounter() {
counter += 1
}
}
Além de usar os métodos da classe UIAccessibility, você também pode usar o VoiceOver Simulator para testar a acessibilidade do seu aplicativo.
O simulador é uma ferramenta que permite que você veja como a tecnologia interagirá com seu aplicativo. Você pode usá-lo para encontrar e corrigir quaisquer problemas de acessibilidade em seu aplicativo.
Considerações Finais
Garantir a acessibilidade do seu aplicativo iOS vai além de apenas aderir a diretrizes e padrões. Na verdade, é um elemento essencial para promover a inclusão e manter a igualdade de acesso às experiências digitais para os indivíduos.
Seu compromisso com a inclusão é evidente na adoção de práticas inclusivas e na adesão às diretrizes de acessibilidade da Apple. Essa dedicação é demonstrada por meio do fornecimento de tecnologia que pode ser aproveitada por todos os indivíduos.
Criar melhores experiências para todos os usuários, projetar interfaces acessíveis é uma oportunidade de inovar que vai além das responsabilidades do trabalho de um desenvolvedor.
Mais fáceis de usar para pessoas com deficiência, as interfaces acessíveis também beneficiam aqueles que buscam interações mais personalizadas com seus dispositivos.
Isso inclui idosos, pessoas com deficiência temporária e qualquer outra pessoa interessada em um envolvimento personalizado com seu dispositivo.
O uso do Swift e da interface do usuário do SwiftUI para a integração do seu aplicativo resulta em um processo tranquilo e sem esforço de incorporação de funcionalidades acessíveis.
O VoiceOver, uma ferramenta robusta, permite que pessoas com deficiência visual se envolvam com os elementos da interface por meio da utilização de comandos de voz e vale ressaltar que o SwiftUI já engloba uma ampla gama de recursos convencionais de acessibilidade.
A acessibilidade é importante para aplicativos porque permite que um público mais amplo os use. Isso inclui pessoas com deficiências visuais, auditivas ou cognitivas. Ao incorporar recursos de acessibilidade em seu aplicativo, você pode garantir que todos tenham a melhor experiência possível.
Além do aspecto moral, a acessibilidade também é importante do ponto de vista legal. Vários países têm leis que exigem que aplicativos e sites sejam acessíveis. Isso significa que, se você não tiver um aplicativo acessível, poderá estar sujeito a ações legais.
Ao criar um aplicativo, é crucial priorizar a acessibilidade. Incorporar recursos de acessibilidade desde o início é fundamental. Felizmente, há uma infinidade de ferramentas e recursos à sua disposição para auxiliar no desenvolvimento de um aplicativo acessível.
Isso não apenas garante a conformidade com os regulamentos legais, mas também promove a inclusão.
Melhorar a acessibilidade é um esforço contínuo que permite crescimento e aprimoramento constantes. Sempre há espaço para refinamento e progresso nesse processo contínuo.
Ao garantir que seu aplicativo iOS esteja acessível, você está contribuindo ativamente para a criação de um mundo digital inclusivo e que permite a participação total de todos os indivíduos, independentemente de suas habilidades.
Esse compromisso com a acessibilidade não apenas garante uma experiência igualitária, mas também aprimora a posição de sua empresa como proponente da diversidade e inclusão.
Portanto, é aconselhável investir em desenvolvimento econômico para colher os frutos de fornecer uma experiência de usuário positiva para todos os usuários do aplicativo.
Referências
[1] GOODWILL, James; MATLOCK, Wesley. The Swift Programming Language. In: GOODWILL, James; MATLOCK, Wesley (Eds.). Beginning Swift Games Development for iOS. Berkeley, CA: Apress, 2015, p. 219–244. Disponível em: <http://link.springer.com/10.1007/978-1-4842-0400-9_17>. Acesso em: 31 jul. 2023.
[2] KENESOVA, A. Z. H.; ILYASOV, A. A.; KIM, Y. E. Programming Language Analysis for Mobile App Development. Turan University, Kazakhstan. E-mail: e.kim@turan-edu.kz.
BARBOSA, Cassia A.; SILVA, Iago A. S. da. Aplicativo para a Plataforma iOS que Auxilia Pessoas com Deficiência Visual no Manuseio de Cédulas de Real. 2021. Disponível em: <https://dspace.mackenzie.br/handle/10899/31004>. Acesso em: 30 jul. 2023.
KUMAR, Pramod. Accessibility in iOS: Hands on Code. Disponível em: <https://medium.com/swiftcommmunity/accessibility-in-ios-hands-on-code-971a219290f8>. Acesso em: 30 jul. 2023.
LEPORINI, Barbara; BUZZI, Maria Claudia; BUZZI, Marina. Interacting with mobile devices via VoiceOver: usability and accessibility issues. In: Proceedings of the 24th Australian Computer-Human Interaction Conference. Melbourne Australia: ACM, 2012, p. 339–348. Disponível em: <https://dl.acm.org/doi/10.1145/2414536.2414591>. Acesso em: 29 jul. 2023.
ORTEGA, Carolina. Inclu, um estudo para o desenvolvimento de um aplicativo de criação de currículos com foco em acessibilidade. 2022. Disponível em: <https://dspace.mackenzie.br/handle/10899/31218>. Acesso em: 31 jul. 2023.
WHITAKER, Rob. Developing Inclusive Mobile Apps: Building Accessible Apps for iOS and Android. Berkeley, CA: Apress, 2020. Disponível em: <http://link.springer.com/10.1007/978-1-4842-5814-9>. Acesso em: 31 jul. 2023.
Accessibility. Apple Developer Documentation. Disponível em: <https://docs.developer.apple.com/design/human-interface-guidelines/accessibility>. Acesso em: 29 jul. 2023.
Accessibility. Apple Developer. Disponível em: <https://developer.apple.com/accessibility/>. Acesso em: 31 jul. 2023.
iOS Accessibility in SwiftUI Tutorial Part 1: Getting Started. kodeco.com. Disponível em: <https://www.kodeco.com/7180554-ios-accessibility-in-swiftui-tutorial-part-1-getting-started>. Acesso em: 30 jul. 2023.