Autocapitalização é um mecanismo do iOS que converte automaticamente a primeira letra do texto inserido para maiúscula em determinados contextos. O UIKit fornece a propriedade autocapitalizationType no protocolo UITextInputTraits com quatro modos: none, words, sentences e allCharacters. De acordo com o Apple Text Programming Guide (2025), a configuração correta da autocapitalização melhora a experiência do utilizador e reduz o número de correções manuais durante a entrada. Use o modo sentences para a maioria dos campos de texto e none para nomes de utilizador e palavras-passe.
Principais conclusões
Autocapitalização é uma funcionalidade do sistema operativo iOS que converte automaticamente o primeiro caractere do texto para maiúscula quando determinadas condições são cumpridas. O mecanismo é controlado através da propriedade autocapitalizationType, disponível para todos os elementos que implementam o protocolo UITextInputTraits: UITextField, UITextView e UISearchBar.
A funcionalidade opera ao nível do motor de texto do iOS e ativa-se no momento em que cada caractere é inserido. O sistema analisa a posição do cursor e o texto circundante para determinar se deve capitalizar o caractere atual. Se a condição for cumprida, o iOS substitui automaticamente a letra minúscula por uma maiúscula antes de esta aparecer no campo.
De acordo com as Apple Human Interface Guidelines (2025), a autocapitalização faz parte de um sistema de entrada preditiva mais amplo que também inclui a autocorreção e a entrada de texto preditiva. O utilizador pode desativar todas estas funcionalidades globalmente nas definições do sistema (Definições > Geral > Teclado), mas o programador também as controla ao nível de campos específicos.
Ao contrário da autocorreção, a autocapitalização não utiliza um modelo de linguagem — funciona por regras simples: após um ponto e espaço, no início do texto, após um caractere de nova linha. A exceção é o modo words, onde a primeira letra de cada palavra é capitalizada independentemente do contexto.
UITextAutocapitalizationType é uma enumeração de quatro valores que definem a estratégia de conversão automática de maiúsculas/minúsculas. Cada modo é concebido para um tipo específico de campo de texto e resolve uma tarefa particular de experiência do utilizador.
O modo .none desativa completamente a conversão automática de maiúsculas/minúsculas. Todos os caracteres são inseridos na forma como o utilizador os digita. Este modo é obrigatório para campos de palavras-passe, endereços de email, alcunhas, pesquisas e qualquer campo onde as maiúsculas sejam importantes para o processamento de dados no servidor.
O modo .words capitaliza a primeira letra de cada palavra inserida. O sistema determina os limites das palavras por espaços e converte o primeiro caractere após um espaço para maiúscula. Este modo é conveniente para campos de nome, apelido, nomes de cidades, ruas e outros campos onde cada palavra deve começar com maiúscula.
O modo .sentences é o mais comum e é usado por defeito na maioria dos campos de texto. O sistema capitaliza a primeira letra após um ponto, ponto de exclamação ou ponto de interrogação seguido de um espaço. Este modo é ideal para notas, mensagens, comentários e outros campos de texto multilinha.
O modo .allCharacters converte todos os caracteres inseridos para maiúsculas. Este modo equivale a manter o Caps Lock premido constantemente e é utilizado para campos onde os dados devem estar em maiúsculas: códigos postais, códigos de país, abreviaturas, números de encomenda. Deve ser usado com precaução, pois o texto em maiúsculas é mais difícil de ler.
| Modo | Descrição | Exemplo de entrada | Recomendação |
|---|---|---|---|
| .none | Sem alterações | joao@mail.com | Email, palavras-passe, pesquisa |
| .words | Cada palavra | João Silva | Nome, endereço, cidade |
| .sentences | Início de frase | Olá. Como está? | Mensagens, notas |
| .allCharacters | Tudo maiúsculas | ABC-123 | Códigos, índices |
O mecanismo de autocapitalização ativa-se durante o processamento da pressão de tecla, antes de o caractere ser exibido no ecrã. Quando o utilizador pressiona uma tecla, o UITextInputTraits verifica a posição atual do cursor e aplica a regra de conversão de maiúsculas/minúsculas de acordo com o autocapitalizationType definido.
Para o modo .sentences, o sistema monitoriza os caracteres de gatilho: ponto (.), ponto de exclamação (!), ponto de interrogação (?), e o caractere de nova linha ( ) quando ativado. Após detetar um caractere de gatilho e o espaço seguinte, o sistema define um sinalizador de “letra maiúscula esperada” para o próximo caractere inserido.
O modo .words monitoriza o caractere de espaço como gatilho. Após cada espaço, o sistema espera uma letra maiúscula para a próxima palavra. No entanto, há exceções: após um hífen, apóstrofo e outros sinais de pontuação dentro de uma palavra, não é inserida uma maiúscula. Por exemplo, “O’Brien” permanece correto.
Uma característica importante é que a autocapitalização funciona apenas no primeiro caractere de uma palavra. Se o utilizador inserir uma palavra contendo maiúsculas no meio (por exemplo, iPhone ou macOS), o sistema não as altera, uma vez que a conversão se aplica apenas ao primeiro caractere após o gatilho. Isto significa que nomes de marcas e produtos com maiúsculas não padrão não serão afetados.
A autocapitalização deve ser desativada em campos onde as maiúsculas são importantes para o processamento correto dos dados. Casos comuns: campos de email, alcunhas e nomes de utilizador, palavras-passe, pesquisas, URLs, códigos de confirmação, IMEI e números de série. Em todos estes casos, as alterações automáticas de maiúsculas causarão erros no processamento do servidor.
Para campos de pesquisa (UISearchBar), a autocapitalização está desativada por defeito, o que corresponde às expectativas do utilizador. Uma consulta de pesquisa pode ser inserida em qualquer formato e o servidor normalmente converte-a para minúsculas por si só. Se a autocapitalização for ativada para a pesquisa, o utilizador terá de corrigir manualmente a maiúscula no início de cada consulta.
Em formulários de registo, o campo de nome de utilizador ou alcunha deve ter o modo .none, pois muitos sistemas diferenciam maiúsculas/minúsculas em nomes de utilizador. O campo de email também deve estar sem autocapitalização — embora os nomes de domínio não sejam sensíveis a maiúsculas/minúsculas, a parte local do email teoricamente pode sê-lo, embora na prática seja raro.
De acordo com a Documentação para Programadores Apple, os campos com secureTextEntry (palavras-passe) herdam automaticamente autocapitalizationType = .none, mesmo que o programador tenha definido explicitamente um valor diferente. O sistema tem a prioridade mais alta para entrada segura e ignora qualquer tentativa de ativar a autocapitalização para um campo de palavra-passe.
A configuração da autocapitalização em Swift é feita através da propriedade autocapitalizationType. A propriedade está disponível para UITextField, UITextView e UISearchBar. O valor pode ser definido tanto em código como através do Interface Builder no inspetor de atributos, onde o modo se chama Capitalization.
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
Para um formulário de contacto, configure cada campo de acordo com a sua semântica: nome — .words, email — .none, mensagem — .sentences. Esta combinação proporciona a melhor experiência do utilizador e minimiza a necessidade de correção manual de maiúsculas/minúsculas.
class ContactFormViewController: UIViewController {
@IBOutlet var nameField: UITextField!
@IBOutlet var emailField: UITextField!
@IBOutlet var messageView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
nameField.autocapitalizationType = .words
emailField.autocapitalizationType = .none
messageView.autocapitalizationType = .sentences
}
}
Para alterações programáticas de modo em tempo de execução, use o delegado UITextFieldDelegate. Por exemplo, se um campo pode ser usado em diferentes contextos, altere autocapitalizationType no método textFieldDidBeginEditing consoante o modo de operação atual do formulário.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
A autocapitalização depende do idioma de entrada definido no teclado do utilizador. Diferentes idiomas podem ter regras diferentes de conversão de maiúsculas/minúsculas. Por exemplo, em turco, a letra “i” em maiúscula torna-se “İ” (com ponto), enquanto “I” em minúscula torna-se “ı” (sem ponto). O iOS lida com estas características automaticamente.
Para o russo, a autocapitalização segue as mesmas regras do inglês: maiúscula após um ponto, no início de uma frase e após uma nova linha. Podem surgir problemas com a letra “yo” — embora esteja presente no dicionário do sistema, nem todas as disposições de teclado a mostram na camada principal, e a autocapitalização converte corretamente “yo” para “Yo”.
Para o chinês, japonês e coreano, a autocapitalização não se aplica, pois estas línguas não têm o conceito de maiúsculas/minúsculas. O modo autocapitalizationType é ignorado pelo sistema ao usar os teclados correspondentes, e o campo comporta-se da mesma forma que no modo .none, independentemente do valor definido.
Para o árabe e hebraico, a autocapitalização também não se aplica, pois estas línguas usam o seu próprio sistema de escrita sem distinção entre maiúsculas e minúsculas. O sistema iOS deteta corretamente o idioma de entrada e ignora as definições de autocapitalização para idiomas onde este conceito não existe.
Perguntas frequentes
Sim, a propriedade autocapitalizationType pode ser alterada a qualquer momento, mesmo quando o campo já está ativo. A alteração entrará em vigor na próxima entrada de caractere.
Sim, para campos com isSecureTextEntry = true, o sistema define automaticamente autocapitalizationType = .none. Este comportamento não pode ser alterado programaticamente.
Sim, o UITextView suporta totalmente autocapitalizationType. Isto é especialmente útil para campos multilinha onde o modo .sentences funciona mais naturalmente.
Se um campo não estiver marcado como secureTextEntry mas for usado para inserir uma palavra-passe, a autocapitalização pode alterar a palavra-passe. Desative-a sempre em campos onde as maiúsculas sejam importantes.
No simulador, a autocapitalização funciona através do teclado físico do Mac e pode comportar-se de forma diferente. Teste num dispositivo real para um comportamento correto.
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