Autocorreção é um mecanismo integrado do iOS que corrige automaticamente erros ortográficos ao inserir texto. O UIKit gerencia o comportamento da autocorreção através da propriedade autocorrectionType no protocolo UITextInputTraits, suportando três modos: padrão, ativado e desativado. De acordo com o Apple Text Programming Guide (2025), a autocorreção analisa o texto inserido com base no dicionário do sistema e aprendizado de máquina no dispositivo. Use autocorrectionType para cada campo de texto individualmente — isto permite adaptar o comportamento à especificidade dos dados inseridos.
Pontos-chave
Autocorreção é uma funcionalidade do sistema operacional iOS que substitui automaticamente palavras digitadas por alternativas presumivelmente corretas quando um erro ortográfico é detectado. O mecanismo funciona ao nível dos campos de texto do UIKit e está disponível em todas as aplicações que utilizam elementos de entrada padrão UITextField e UITextView.
No núcleo da autocorreção existe um modelo de linguagem treinado com milhões de exemplos de texto para cada idioma suportado. O modelo funciona completamente no dispositivo (on-device), garantindo a confidencialidade dos dados inseridos — o texto não é enviado para os servidores da Apple para análise. A cada atualização do iOS, o modelo é refinado e expandido com novas palavras e regras.
A autocorreção é ativada automaticamente para todos os campos de texto, a menos que o desenvolvedor a desative explicitamente. O utilizador pode desativar completamente a autocorreção nas definições do sistema (Definições > Geral > Teclado > Autocorreção), mas o desenvolvedor também pode controlar este comportamento para campos individuais através da propriedade autocorrectionType.
De acordo com a WWDC 2023 Sessão 204, a Apple apresentou um modelo melhorado de autocorreção baseado em Transformer, que considera o contexto de toda a frase e não apenas a última palavra. Isto reduziu as correções falsas em 30% em comparação com o modelo anterior baseado em n-gramas.
UITextAutocorrectionType é uma enumeração com três valores que determinam o comportamento da autocorreção para um campo de texto específico. Cada valor é definido através da propriedade autocorrectionType, acessível no Interface Builder e em código ao criar o campo.
O valor .default significa que o campo herda a definição global de autocorreção dos parâmetros do sistema do teclado. Este modo é recomendado para a maioria dos campos de texto, pois respeita a escolha do utilizador. Se o utilizador desativou a autocorreção nas definições, um campo com .default também não a utilizará.
O valor .yes ativa forçosamente a autocorreção para o campo independentemente da definição do sistema. Este modo só deve ser usado para campos onde a precisão ortográfica é crítica — por exemplo, em editores de texto, campos de inserção de notas ou mensagens. A Apple recomenda usar .yes com cautela, pois a ativação forçada pode contradizer as expectativas do utilizador.
O valor .no desativa a autocorreção para um campo específico. Este modo é obrigatório para campos de senhas (inserção de texto segura), endereços de email, códigos de verificação e consultas de pesquisa. Nestes campos, a autocorreção não é apenas inútil, mas prejudicial — pode substituir dados corretamente inseridos por alternativas erradas.
| Modo | Valor | Recomendação |
|---|---|---|
| .default | Herda a definição do sistema | Maioria dos campos de inserção |
| .yes | Forçosamente ativado | Editores de texto, notas |
| .no | Forçosamente desativado | Senhas, email, pesquisa, códigos |
O modelo de linguagem da autocorreção do iOS utiliza uma combinação de um dicionário estático e um modelo treinado dinamicamente. O dicionário do sistema contém as palavras mais utilizadas para cada idioma, enquanto o modelo de linguagem baseado em Transformer analisa o contexto e a probabilidade de substituição. O modelo é treinado no dispositivo com base nos textos inseridos pelo utilizador.
Os utilizadores podem adicionar palavras a um dicionário pessoal através das definições do teclado (Definições > Geral > Teclado > Substituição de Texto). As palavras adicionadas são guardadas no iCloud e sincronizadas entre dispositivos usando o mesmo Apple ID. O sistema não corrigirá palavras do dicionário pessoal, o que é conveniente para nomes, marcas e termos técnicos.
Para domínios especializados — médicos, legais, técnicos — o dicionário padrão pode conter termos insuficientes. Nessas aplicações, recomenda-se desativar a autocorreção para os campos relevantes ou usar a substituição de texto personalizada através do método UIResponder .replacementDictionary para iOS 17+.
De acordo com a Apple Machine Learning Research (2024), o novo modelo de autocorreção baseado na arquitetura Transformer processa até 10 tokens de contexto (contra 3 tokens no modelo anterior), permitindo determinar com maior precisão a intenção do utilizador. O modelo considera não apenas a ortografia, mas também a estrutura gramatical da frase.
Safe Keyboard é um modo de inserção protegido que é ativado automaticamente para campos com secureTextEntry = true. Neste modo, a autocorreção, a autocapitalização e a inserção preditiva são desativadas pelo sistema independentemente dos valores definidos de autocorrectionType. O sistema também bloqueia o acesso ao dicionário do utilizador e às substituições de texto.
O Safe Keyboard previne a fuga de dados inseridos através dos mecanismos de autocorreção. Se a autocorreção estivesse ativa para um campo de senha, o sistema poderia guardar a senha inserida no dicionário do utilizador ou enviá-la para os servidores da Apple para treino do modelo. O Safe Keyboard garante que os dados confidenciais não saiam da aplicação.
Para aplicações financeiras, o Safe Keyboard é ativado automaticamente apenas para campos com secureTextEntry. Para campos de inserção de números de cartão, datas de validade e códigos CVV, o desenvolvedor deve desativar adicionalmente a autocorreção manualmente definindo autocorrectionType = .no e keyboardType = .numberPad ou .phonePad.
A partir do iOS 17, o Safe Keyboard suporta proteção contra interceção através de teclados de terceiros. Se o utilizador instalou um teclado da App Store, quando secureTextEntry é ativado, o teclado do sistema substitui automaticamente o de terceiros, mesmo que estivesse selecionado como padrão. Isto garante que as senhas sejam inseridas apenas através do teclado seguro do sistema.
A gestão da autocorreção em Swift é feita através da propriedade autocorrectionType dos objetos UITextField e UITextView. A propriedade está disponível tanto para leitura como para escrita, e pode ser alterada dinamicamente conforme o contexto de inserção. A configuração através do Interface Builder está disponível no inspetor de atributos sob o nome Correction.
let textField = UITextField()
textField.autocorrectionType = .no
Para um formulário de início de sessão, a autocorreção deve ser desativada para o campo de senha e ativada por padrão para o campo de início de sessão. O campo de email também é recomendado deixar sem autocorreção, pois o símbolo @ e os nomes de domínio são frequentemente substituídos incorretamente. Para o campo de nome de utilizador, a autocorreção pode ser ativada se o nome de utilizador for uma palavra legível.
class RegistrationViewController: UIViewController {
@IBOutlet var nameField: UITextField!
@IBOutlet var emailField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
nameField.autocorrectionType = .yes
emailField.autocorrectionType = .no
emailField.textContentType = .emailAddress
}
}
Para UITextView, a configuração da autocorreção é feita de forma semelhante. Isto é especialmente importante para campos de inserção multilinha de comentários, mensagens e notas, onde a autocorreção traz o maior benefício mas também pode criar inconvenientes ao inserir termos técnicos ou código.
let textView = UITextView()
textView.autocorrectionType = .default
Para alterações dinâmicas da autocorreção, use o delegado UITextFieldDelegate. O método textFieldDidBeginEditing é chamado quando um campo é ativado, e nele pode alterar autocorrectionType dependendo do contexto atual ou da função do campo, que pode mudar durante a operação da aplicação.
A autocorreção deve ser desativada em campos onde a precisão dos dados inseridos é crítica e o sistema não consegue determinar corretamente a intenção do utilizador. Casos principais: campos de senhas e dados seguros, campos de inserção de endereços de email, strings de pesquisa, campos de inserção de código e código de programação, bem como campos com formatos de dados não padronizados.
Para barras de pesquisa (UISearchBar), a autocorreção está desativada por padrão, o que corresponde às expectativas dos utilizadores. Ao pesquisar, o utilizador pode inserir palavras incompletas, termos técnicos ou consultas em diferentes idiomas, e a autocorreção só atrapalharia. Similarmente para campos de inserção de URL e nomes de domínio.
Em mensageiros e aplicações de comunicação, a autocorreção geralmente está ativada, mas para inserir gírias, abreviações e vocabulário informal, pode criar inconvenientes. Nesses casos, o utilizador pode desativar a autocorreção através das definições do teclado, ou o desenvolvedor pode fornecer um interruptor diretamente na interface da aplicação.
De acordo com as Human Interface Guidelines da Apple, a autocorreção deve ser desativada para qualquer campo onde os dados inseridos possam não ser encontrados no dicionário do sistema: números de encomenda, códigos de reserva, identificadores, IMEI, endereços MAC. Se o campo aceitar dados alfanuméricos num formato não padronizado — desative a autocorreção.
Perguntas frequentes
Não existe uma desativação global da autocorreção para toda a aplicação. É necessário definir autocorrectionType = .no para cada campo de texto individualmente ou criar uma subclasse de UITextField com um valor sobrescrito.
O simulador utiliza um modelo de inserção simplificado do teclado do Mac. O modelo de linguagem da autocorreção não está ativo no simulador — utilize um dispositivo real para testes.
O utilizador pode adicionar uma palavra através de Definições > Geral > Teclado > Substituição de Texto. Não existe uma API para a aplicação adicionar palavras programaticamente ao dicionário do sistema de autocorreção.
Não, keyboardType não afeta a autocorreção. Mesmo para o teclado .numberPad, a autocorreção pode estar ativa se não for explicitamente desativada através de autocorrectionType.
Os teclados de terceiros têm os seus próprios mecanismos de autocorreção e não utilizam o UITextAutocorrectionType do sistema. O comportamento depende da implementação do teclado específico.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também