Tipo de capitalización automática de UITextField: aplicación para iPhone

112

¿Hay alguna manera de establecer el tipo de capitalización automática para a de UITextFieldmodo que la primera letra de cada palabra esté en mayúscula de forma predeterminada?

Este es un ejemplo de lo que quiero

CodeGuy
fuente
45
Por otro lado, es bueno poder buscar en Google 'UITextField capitalization' y tener esta ventana emergente en 2 segundos, en lugar de perder un minuto completo para abrir la documentación y escanearla. Documentación de StackOverflow IS.
Shaun Budhram
1
Tropezar con preguntas como esta me hace feliz de que 1) la gente sea capaz de hacer preguntas directas coherentes (sin importar el alcance) y 2) la gente comente la mejor mierda
Will Von Ullrich

Respuestas:

237

Utilizar textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

Para obtener más información, lea: Referencia del protocolo UITextInputTraits

AlexVogel
fuente
2
No ayuda si pasa el texto al campo. En este caso, delegue la entrada de texto y reemplace la primera letra de cada palabra
HotJard
¿Le importaría elaborar más HotJard? Me gustaría saber cómo pegar un texto y utilizar mayúsculas automáticamente.
vnchopra
5
No funciona, lo probé en Xcode 6 iOS 8 Swift. Lo hice en el constructor de código e interfaz, ninguno de los dos funciona.
Van Du Tran
10
Asegúrese de que el teclado en el generador de interfaces esté configurado como predeterminado. De lo contrario, no funcionará
OscarVGG
3
También asegúrese de tener habilitada la autocapitalización en la configuración del sistema operativo (configuración-> general-> teclado), los valores de configuración de iOS anulan cualquier cosa que establezca en el campo de texto
Lope
38

Lo que queremos hacer es configurar el campo de texto autocapitalizationType.

C objetivo:

self.textfield.autocapitalizationType = UITextAutocapitalizationTypeWords

Rápido:

self.textfield.autocapitalizationType = .words

Hay algunas opciones aquí:

ingrese la descripción de la imagen aquí

  • allCharacters es lo mismo que tocar dos veces la tecla de mayúsculas, básicamente mayúsculas.
  • none es bastante autoexplicativo, el teclado nunca intentará poner letras en mayúscula.
  • sentences intentará poner en mayúscula la siguiente palabra después de una marca de puntuación al final.
  • words intentará poner en mayúscula cada palabra nueva (después de un espacio), que parece ser exactamente lo que está buscando.

Esta propiedad también se puede establecer desde el Inspector de atributos del constructor de interfaces cuando tiene seleccionado el campo de texto apropiado:

ingrese la descripción de la imagen aquí

"Capitalización" es la primera opción en este grupo, acaba de pasar seleccionando el tamaño de fuente mínimo para el campo de texto.

nhgrif
fuente
8

Establecer la capitalizationpropiedad en "Palabras" sugerirá que el usuario ingrese palabras en mayúsculas. Esto puede ser anulado por el usuario des-shift en el teclado. Lo mejor que puede hacer es escribir con mayúscula las palabras en el código:

NSString *text = [myTextField.text capitalizedString];
Evan Mulawski
fuente
Esto pondrá en mayúscula toda la cadena, UITextAutocapitalizationTypeWords solo pone en mayúscula la primera letra de cada palabra escrita.
Jacob
Aunque esto no es lo que quería el OP, ¡realmente lo encontré útil! Tenía un NSString guardado en algún lugar, que estaba todo en mayúsculas. Necesitaba comparar el texto de un UITextField con la cadena original, y usar su recomendación me salvó de tener que explicar las cosas a mi usuario (dejé que Objective c hiciera todo el trabajo
:)
7

Si. En InterfaceBuilder, en el inspector de atributos textField, puede configurar la propiedad de Capitalización en Palabras.

Marsson
fuente
6

Hay una respuesta para Obj-C, estoy aquí para Swift;

textField.autocapitalizationType = UITextAutocapitalizationType.words

o camino más corto

textField.autocapitalizationType = .words
Kemal Can Kaynak
fuente
Probé .words y .allCharacters. En el simulador, funciona. En un iPhone X conectado, no es así. Xcode 10.1, iPhone 12.1.
geohei
1
No funcionaré si en la configuración -> General -> Auto-Corrección / Auto-Capitalización está desactivado.
Sheetal Shinde
1

Incluso puede hacerlo desde el archivo Storyboard o .xib. Solo tiene que seleccionar el campo de texto y en el inspector de atributos a la derecha hay una sección de Capitalización donde puede elegir lo que más le convenga. En su caso, es "Palabras" en mayúscula.

mgm
fuente
0

En Xamarin.ios / Monotouch esto funcionó para mí:

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