Autocapitalización es un mecanismo de iOS que convierte automáticamente la primera letra del texto ingresado a mayúscula en ciertos contextos. UIKit proporciona la propiedad autocapitalizationType en el protocolo UITextInputTraits con cuatro modos: none, words, sentences y allCharacters. Según la Apple Text Programming Guide (2025), la configuración correcta de la autocapitalización mejora la experiencia del usuario y reduce la cantidad de correcciones manuales durante la entrada. Use el modo sentences para la mayoría de los campos de texto y none para nombres de usuario y contraseñas.
Puntos clave
Autocapitalización es una función del sistema operativo iOS que convierte automáticamente el primer carácter del texto a mayúscula cuando se cumplen ciertas condiciones. El mecanismo se controla mediante la propiedad autocapitalizationType, disponible para todos los elementos que implementan el protocolo UITextInputTraits: UITextField, UITextView y UISearchBar.
La función opera a nivel del motor de texto de iOS y se activa en el momento de ingresar cada carácter. El sistema analiza la posición del cursor y el texto circundante para determinar si debe convertir a mayúscula el carácter actual. Si se cumple la condición, iOS reemplaza automáticamente la letra minúscula por una mayúscula antes de que se muestre en el campo.
Según las Apple Human Interface Guidelines (2025), la autocapitalización es parte de un sistema más amplio de entrada predictiva que también incluye la autocorrección y el texto predictivo. El usuario puede desactivar todas estas funciones globalmente en los ajustes del sistema (Ajustes > General > Teclado), pero el desarrollador también las controla a nivel de campos específicos.
A diferencia de la autocorrección, la autocapitalización no utiliza un modelo de lenguaje — funciona mediante reglas simples: después de un punto y espacio, al inicio del texto, después de un carácter de nueva línea. La excepción es el modo words, donde la primera letra de cada palabra se convierte a mayúscula independientemente del contexto.
UITextAutocapitalizationType es una enumeración de cuatro valores que definen la estrategia de conversión automática de mayúsculas. Cada modo está diseñado para un tipo específico de campo de texto y resuelve una tarea particular de experiencia de usuario.
El modo .none desactiva completamente la conversión automática de mayúsculas. Todos los caracteres se ingresan en la forma en que el usuario los escribe. Este modo es obligatorio para campos de contraseñas, direcciones de email, apodos, búsquedas y cualquier campo donde las mayúsculas importen para el procesamiento de datos en el servidor.
El modo .words convierte a mayúscula la primera letra de cada palabra ingresada. El sistema determina los límites de las palabras por espacios y convierte el primer carácter después de un espacio a mayúscula. Este modo es útil para campos de nombre, apellido, ciudades, calles y otros campos donde cada palabra debe comenzar con mayúscula.
El modo .sentences es el más común y se utiliza por defecto en la mayoría de los campos de texto. El sistema pone en mayúscula la primera letra después de un punto, signo de exclamación o interrogación seguido de un espacio. Este modo es ideal para notas, mensajes, comentarios y otros campos de texto multilínea.
El modo .allCharacters convierte todos los caracteres ingresados a mayúsculas. Este modo equivale a mantener pulsado Bloq Mayús constantemente y se utiliza para campos donde los datos deben estar en mayúsculas: códigos postales, códigos de país, abreviaturas, números de pedido. Debe usarse con precaución, ya que el texto en mayúsculas es más difícil de leer.
| Modo | Descripción | Ejemplo de entrada | Recomendación |
|---|---|---|---|
| .none | Sin cambios | juan@mail.com | Email, contraseñas, búsqueda |
| .words | Cada palabra | Juan Pérez | Nombre, dirección, ciudad |
| .sentences | Inicio de oración | Hola. ¿Cómo estás? | Mensajes, notas |
| .allCharacters | Todo mayúsculas | ABC-123 | Códigos, índices |
El mecanismo de autocapitalización se activa durante el procesamiento de la pulsación de tecla, antes de que el carácter se muestre en pantalla. Cuando el usuario presiona una tecla, UITextInputTraits verifica la posición actual del cursor y aplica la regla de conversión de mayúsculas según el autocapitalizationType establecido.
Para el modo .sentences, el sistema rastrea los caracteres desencadenantes: punto (.), signo de exclamación (!), signo de interrogación (?) y el carácter de nueva línea ( ) cuando está activado. Después de detectar un carácter desencadenante y el espacio siguiente, el sistema establece una bandera de “esperar mayúscula” para el siguiente carácter ingresado.
El modo .words rastrea el carácter de espacio como desencadenante. Después de cada espacio, el sistema espera una mayúscula para la siguiente palabra. Sin embargo, hay excepciones: después de un guión, apóstrofo y otros signos de puntuación dentro de una palabra, no se inserta mayúscula. Por ejemplo, “O’Brien” se mantiene correcto.
Una característica importante es que la autocapitalización solo funciona en el primer carácter de una palabra. Si el usuario ingresa una palabra que contiene mayúsculas en medio (por ejemplo, iPhone o macOS), el sistema no las modifica, ya que la conversión solo se aplica al primer carácter después del desencadenante. Esto significa que los nombres de marcas y productos con mayúsculas no estándar no se verán afectados.
La autocapitalización debe desactivarse en campos donde las mayúsculas importan para el procesamiento correcto de datos. Casos comunes: campos de email, apodos y nombres de usuario, contraseñas, búsquedas, URLs, códigos de verificación, IMEI y números de serie. En todos estos casos, los cambios automáticos de mayúsculas provocarán errores en el procesamiento del servidor.
Para campos de búsqueda (UISearchBar), la autocapitalización está desactivada por defecto, lo que coincide con las expectativas del usuario. Una consulta de búsqueda puede ingresarse en cualquier forma y el servidor normalmente la convierte a minúsculas por sí mismo. Si se activa la autocapitalización para la búsqueda, el usuario tendrá que corregir manualmente la mayúscula al inicio de cada consulta.
En formularios de registro, el campo de nombre de usuario o apodo debe tener el modo .none, ya que muchos sistemas diferencian mayúsculas en los nombres de usuario. El campo de email también debe estar sin autocapitalización — aunque los nombres de dominio no distinguen mayúsculas, la parte local del email teóricamente puede hacerlo, aunque en la práctica es raro.
Según la Documentación para Desarrolladores de Apple, los campos con secureTextEntry (contraseñas) heredan automáticamente autocapitalizationType = .none, incluso si el desarrollador estableció explícitamente otro valor. El sistema tiene la máxima prioridad para la entrada segura e ignora cualquier intento de activar la autocapitalización para un campo de contraseña.
La configuración de la autocapitalización en Swift se realiza mediante la propiedad autocapitalizationType. La propiedad está disponible para UITextField, UITextView y UISearchBar. El valor se puede establecer tanto en código como a través de Interface Builder en el inspector de atributos, donde el modo se llama Capitalization.
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
Para un formulario de contacto, configure cada campo según su semántica: nombre — .words, email — .none, mensaje — .sentences. Esta combinación proporciona la mejor experiencia de usuario y minimiza la necesidad de corrección manual de mayú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 cambios programáticos de modo en tiempo de ejecución, use el delegado UITextFieldDelegate. Por ejemplo, si un campo puede usarse en diferentes contextos, cambie autocapitalizationType en el método textFieldDidBeginEditing según el modo de operación actual del formulario.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
La autocapitalización depende del idioma de entrada configurado en el teclado del usuario. Diferentes idiomas pueden tener diferentes reglas de conversión de mayúsculas. Por ejemplo, en turco, la letra “i” en mayúscula se convierte en “İ” (con punto), mientras que “I” en minúscula se convierte en “ı” (sin punto). iOS maneja estas características automáticamente.
Para el ruso, la autocapitalización sigue las mismas reglas que el inglés: mayúscula después de un punto, al inicio de una oración y después de una nueva línea. Pueden surgir problemas con la letra “yo” — aunque está presente en el diccionario del sistema, no todas las distribuciones de teclado la muestran en la capa principal, y la autocapitalización convierte correctamente “yo” a “Yo”.
Para el chino, japonés y coreano, la autocapitalización no se aplica, ya que estos idiomas no tienen el concepto de mayúsculas y minúsculas. El modo autocapitalizationType es ignorado por el sistema al usar los teclados correspondientes, y el campo se comporta igual que en el modo .none, independientemente del valor establecido.
Para el árabe y el hebreo, la autocapitalización tampoco se aplica, ya que estos idiomas utilizan su propio sistema de escritura sin distinción entre mayúsculas y minúsculas. El sistema iOS detecta correctamente el idioma de entrada e ignora la configuración de autocapitalización para idiomas donde este concepto no existe.
Preguntas frecuentes
Sí, la propiedad autocapitalizationType se puede cambiar en cualquier momento, incluso cuando el campo ya está activo. El cambio surtirá efecto en la siguiente entrada de carácter.
Sí, para campos con isSecureTextEntry = true, el sistema establece automáticamente autocapitalizationType = .none. Este comportamiento no se puede cambiar programáticamente.
Sí, UITextView es totalmente compatible con autocapitalizationType. Esto es especialmente útil para campos multilínea donde el modo .sentences funciona de forma más natural.
Si un campo no está marcado como secureTextEntry pero se usa para ingresar una contraseña, la autocapitalización puede cambiar la contraseña. Desactívela siempre en campos donde las mayúsculas importen.
En el simulador, la autocapitalización funciona a través del teclado físico de Mac y puede comportarse de manera diferente. Pruebe en un dispositivo real para un comportamiento correcto.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también