UITextField tipo de capitalização automática - aplicativo para iPhone

112

Existe uma maneira de definir o autocapitalizationType para a UITextFieldpara que a primeira letra de cada palavra seja maiúscula por padrão?

Este é um exemplo do que eu quero

CodeGuy
fonte
45
Por outro lado - é bom ser capaz de pesquisar 'letras maiúsculas em UITextField' no Google e fazer com que isso apareça em 2 segundos, ao invés de perder um minuto inteiro para abrir a documentação e fazer a varredura. Documentação do StackOverflow IS.
Shaun Budhram
1
Tropeçar em perguntas como essa me deixa feliz porque 1) as pessoas são capazes de fazer perguntas diretas e coerentes (não importa o escopo) e 2) as pessoas comentam as melhores ***
Will Von Ullrich

Respostas:

237

Usar textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

Para obter mais informações, leia: Referência do protocolo UITextInputTraits

AlexVogel
fonte
2
Não ajuda se você colar o texto no campo. Neste caso, delegue a entrada de texto e substitua a primeira letra de cada palavra
HotJard
Você gostaria de elaborar mais um HotJard? Gostaria de saber como colar um texto e autocapitalizar.
vnchopra
5
Não funciona, experimentei no Xcode 6 iOS 8 Swift. Fiz isso no construtor de código e interface, nenhum dos dois funciona.
Van Du Tran
10
Certifique-se de que o teclado no construtor de interface esteja definido como padrão. Caso contrário, não funcionará
OscarVGG
3
Além disso, certifique-se de ter a autocapitalização habilitada nas configurações do sistema operacional (configurações-> geral-> teclado), os valores das configurações do iOS substituem qualquer coisa que você definir no campo de texto
Lope
38

O que queremos fazer é definir o campo de texto autocapitalizationType.

Objective-C:

self.textfield.autocapitalizationType = UITextAutocapitalizationTypeWords

Rápido:

self.textfield.autocapitalizationType = .words

Existem algumas opções aqui:

insira a descrição da imagem aqui

  • allCharacters é o mesmo que tocar duas vezes na tecla shift, basicamente capslock.
  • none é bastante autoexplicativo, o teclado nunca tentará colocar letras maiúsculas.
  • sentences tentará colocar a próxima palavra em maiúscula após uma pontuação de marca de fim.
  • words tentará colocar cada palavra nova em maiúscula (após um espaço), que parece ser exatamente o que você está procurando.

Esta propriedade também pode ser definida no Inspetor de Atributos do construtor de interface quando você seleciona o campo de texto apropriado:

insira a descrição da imagem aqui

“Capitalização” é a primeira opção desse grupo, bastando para isso escolher o tamanho mínimo da fonte para o campo de texto.

nhgrif
fonte
8

Definir a capitalizationpropriedade como "Palavras" sugerirá que o usuário insira palavras em maiúsculas. Isso pode ser anulado pelo usuário, removendo a mudança no teclado. A melhor coisa a fazer é capitalizar as palavras no código:

NSString *text = [myTextField.text capitalizedString];
Evan Mulawski
fonte
Isso colocará toda a string em maiúscula, UITextAutocapitalizationTypeWords apenas coloca em maiúscula a primeira letra de cada palavra digitada.
Jacob
Embora não fosse isso que o OP queria, realmente achei útil! Eu tinha um NSString salvo em algum lugar, que estava todo em letras maiúsculas. Eu precisava comparar o texto de um UITextField com a string original, e usar sua recomendação me salvou de ter que explicar coisas ao meu usuário (eu deixei Objective c fazer todo o trabalho
:)
7

Sim. Em InterfaceBuilder, no inspetor de atributo textField, você pode configurar a propriedade Capitalization para Words.

Marsson
fonte
6

Há uma resposta para Obj-C, estou aqui para Swift;

textField.autocapitalizationType = UITextAutocapitalizationType.words

ou caminho mais curto

textField.autocapitalizationType = .words
Kemal Can Kaynak
fonte
Testei .words e .allCharacters. No Simulador, funciona. Em um iPhone X conectado, isso não acontece. Xcode 10.1, iPhone 12.1.
geohei
1
Não funcionarei se na configuração -> Geral -> Correção automática / Capitalização automática estiver desativado.
Sheetal Shinde
1

Você pode até mesmo fazer isso no arquivo Storyboard ou .xib. Basta selecionar o campo de texto e no inspetor de atributos à direita há uma seção de Capitalização onde você pode escolher o que mais lhe convier. No seu caso, é a capitalização "Palavras".

mgm
fonte
0

Em Xamarin.ios / Monotouch isso funcionou para mim:

textField.AutocapitalizationType = UITextAutocapitalizationType.Words;
Daniele D.
fonte