Text Content Type: tipos semánticos y UIKit

Autor: IT Sectr Publicado: 2026-07-07 Tiempo de lectura: 8 min

Text Content Type es un mecanismo de iOS que indica al sistema qué datos espera un campo de texto. UIKit proporciona constantes UITextContentType para marcar campos de entrada: email, contraseña, teléfono, username y decenas de otros tipos semánticos. Según las Apple Human Interface Guidelines (2025), una configuración correcta del content type aumenta la velocidad de llenado de formularios en un 40% gracias al autocompletado y al teclado adaptativo. Use UITextContentType en cada campo de texto: mejora la experiencia del usuario y reduce los errores de entrada.

Puntos clave

  • Text Content Type es una etiqueta semántica para UITextField y UITextView que indica el tipo de datos esperados
  • UITextContentType contiene más de 30 tipos predefinidos: email, teléfono, contraseña, dirección, nombre, apellido y otros
  • Autocompletado funciona solo cuando el content type está correctamente especificado: el sistema asocia el campo con datos del llavero
  • Teclado se adapta al tipo: para email muestra @, para teléfono muestra una distribución numérica
  • Seguridad: use tipos apropiados para contraseñas y códigos de un solo uso para activar la integración con iCloud Keychain

¿Qué es Text Content Type?

Text Content Type (UITextContentType) es una propiedad de los campos de texto de UIKit que indica a iOS qué datos semánticos espera el campo de entrada. El sistema utiliza esta información para dos propósitos: seleccionar la distribución de teclado adecuada y activar el mecanismo de autocompletado del llavero (iCloud Keychain).

iOS 5 introdujo la primera versión de los tipos semánticos, y en iOS 17 el conjunto de UITextContentType se expandió a 34 constantes, incluyendo nuevos tipos para códigos de un solo uso, códigos postales y nombres de calles. Cada constante representa una cadena que el sistema asigna a reglas de procesamiento internas.

El mecanismo funciona a nivel de UITextInputTraits, un protocolo heredado por UITextField, UITextView y UISearchBar. Esto significa que el content type está disponible en todos los elementos de entrada estándar sin configuración adicional.

Según la sesión 101 de WWDC 2024, Apple recomienda especificar un content type para cada campo de texto en la interfaz, incluso si no se espera autocompletado. El propio marcado ayuda a VoiceOver a anunciar correctamente el propósito del campo para usuarios con discapacidades.

Tipos disponibles de UITextContentType

UIKit proporciona una jerarquía de tipos divididos en categorías. Los grupos principales incluyen datos de identificación (nombre, apellido, username), información de contacto (email, teléfono, dirección) y credenciales (contraseña, código de un solo uso). Cada grupo activa diferentes mecanismos de autocompletado.

Datos de contacto

El grupo de tipos de contacto incluye `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` y `.city`. Estos tipos activan el autocompletado desde contactos e iCloud Keychain. Un campo con tipo `.emailAddress` sugiere automáticamente direcciones de email introducidas anteriormente, mientras que `.telephoneNumber` sugiere números de teléfono de la agenda.

Credenciales

Para campos de inicio de sesión están destinados .username, .password y .newPassword. El tipo .username activa el gestor de contraseñas de iCloud, que ofrece credenciales guardadas. Un campo con tipo .newPassword inicia la generación de una contraseña segura a través de iCloud Keychain en la primera entrada.

Tipos especializados iOS 17+

A partir de iOS 17, Apple añadió .oneTimeCode para códigos de confirmación SMS y .shipmentTrackingNumber para seguimiento de paquetes. El tipo .oneTimeCode reconoce automáticamente los códigos de los mensajes y los ofrece en la barra QuickType sin necesidad de abrir la aplicación Mensajes.

CategoríaTiposiOS
Identificación.name, .givenName, .familyName, .nickname5+
Contactos.emailAddress, .telephoneNumber, .fullStreetAddress5+
Credenciales.username, .password, .newPassword5+
Ubicación.location, .city, .state, .postalCode10+
Datos de tarjeta.creditCardNumber, .creditCardSecurityCode12+
Códigos de un solo uso.oneTimeCode17+

Cada tipo se representa mediante una constante de cadena, pero deben compararse usando el operador ==, no mediante rawValue. iOS puede añadir nuevos tipos en versiones futuras, por lo que siempre use una rama default en las sentencias switch-case.

Adaptación del teclado al tipo de contenido

UIKeyboardType y UITextContentType trabajan juntos: el tipo de teclado determina la distribución del teclado, mientras que el content type añade botones adicionales en la barra QuickType. Si se establece un content type, iOS puede sobrescribir el tipo de teclado para una entrada óptima. Por ejemplo, con el tipo `.emailAddress`, el teclado muestra automáticamente el símbolo @ en la capa principal.

Para un campo con tipo .telephoneNumber, iOS cambia el teclado a la distribución telefónica independientemente del tipo de teclado establecido. Este comportamiento no se puede desactivar: el sistema considera que la prioridad del content type es mayor que la configuración explícita del teclado. Los desarrolladores no necesitan configurar ambas propiedades.

Los tipos .URL y .emailAddress añaden botones .com y @ al teclado respectivamente. El tipo .decimalPad con content type .creditCardNumber muestra un teclado numérico con separador decimal, lo que es conveniente para introducir cantidades y números de tarjeta. Según las Apple Human Interface Guidelines, los usuarios esperan que el teclado coincida con el tipo de datos que se introducen, no al revés.

Una excepción es .oneTimeCode: este tipo no cambia la distribución del teclado pero activa la barra QuickType con códigos de SMS. El usuario ve una sugerencia de código sobre el teclado y puede insertarlo con un toque. El mecanismo funciona solo para campos que se convierten en first responder después de recibir un SMS.

Autocompletado y llavero

El autocompletado en iOS utiliza Text Content Type para asociar campos de entrada con datos de iCloud Keychain y ASCredentialProviderViewController. El sistema analiza todos los campos en la pantalla, determina sus tipos semánticos y ofrece los datos guardados correspondientes. Sin tipos correctamente especificados, el autocompletado no se activa.

Para que el autocompletado funcione, deben cumplirse tres condiciones. Primera, el campo debe tener un UITextContentType correcto. Segunda, la pantalla debe contener al menos dos campos con tipos diferentes (por ejemplo, .username y .password). Tercera, la aplicación debe admitir Associated Domains con el entitlement webcredentials para la sincronización con un sitio web.

El llavero (Keychain) utiliza el content type para clasificar los registros guardados. Si un campo está marcado como .password, el sistema guarda el valor introducido en iCloud Keychain y lo ofrece en el siguiente inicio de sesión. Los campos con tipo .creditCardNumber se guardan automáticamente en Wallet después de la confirmación con Face ID.

Para códigos de un solo uso con tipo .oneTimeCode, iOS 17 utiliza el nuevo mecanismo AutoFill OTP, que no requiere acceso directo a SMS. El sistema intercepta los códigos de los mensajes a nivel del sistema operativo y los pasa a la aplicación a través de la barra QuickType, evitando que la aplicación lea el contenido de los mensajes.

Ejemplos de uso en Swift

La configuración básica de Text Content Type en Swift se realiza mediante la propiedad textContentType en código o a través de Interface Builder. En código, asignar una constante toma una línea, mientras que en IB el tipo deseado se selecciona de una lista desplegable en el inspector de atributos.

swift
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"

let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword

Para la creación programática de un formulario de inicio de sesión con autocompletado, use ambos campos con diferentes content types. El sistema los vincula automáticamente como login y contraseña. Si la aplicación admite inicio de sesión biométrico, añada un campo con tipo .username para el reconocimiento correcto de la cuenta.

swift
class LoginViewController: UIViewController {

    @IBOutlet var usernameField: UITextField!
    @IBOutlet var passwordField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        usernameField.textContentType = .username
        passwordField.textContentType = .password
        passwordField.autocorrectionType = .no
    }
}

Para un campo de entrada de código de un solo uso desde SMS, especifique el tipo .oneTimeCode. El sistema sugerirá automáticamente el código en la barra QuickType después de recibirlo. El desarrollador no necesita solicitar permiso de lectura de SMS ni implementar un análisis de mensajes personalizado.

swift
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"

Para iOS 17+, el tipo .oneTimeCode admite el llenado automático sin enfoque en el campo. Si el usuario recibe un SMS con un código, iOS lo ofrece en la pantalla de bloqueo, y después del desbloqueo, el código se inserta automáticamente en el campo activo con el content type correspondiente.

Recomendaciones para elegir un tipo

Elegir el tipo correcto afecta directamente la conversión del formulario y la experiencia del usuario. Apple recomienda encarecidamente especificar el tipo más concreto disponible. Por ejemplo, use .givenName para el campo de nombre en lugar del genérico .name: esto permite que el sistema sugiera autocompletado desde contactos con el nombre correcto.

Evite un error común: establecer .emailAddress para un campo de username. Si la aplicación usa el email como login, especifique .username para el campo de login y .password para el campo de contraseña. El tipo .emailAddress está destinado exclusivamente para la entrada de email como dato de contacto, no como identificador.

Para formularios con varios campos del mismo tipo (por ejemplo, dos direcciones de email), establezca la propiedad .textContentType para cada campo pero añada diferentes valores de accessibilityIdentifier. Esto ayuda a VoiceOver a anunciar correctamente los campos, aunque el sistema de autocompletado puede sugerir el mismo valor para ambos campos.

Pruebe el autocompletado en un dispositivo real con un llavero poblado. El simulador no admite iCloud Keychain en su totalidad, y el comportamiento del autocompletado puede diferir. Según los Apple Developer Forums (2025), los problemas más comunes de autocompletado surgen precisamente de un content type especificado incorrectamente.

Preguntas frecuentes

¿En qué se diferencia textContentType de keyboardType?

UITextContentType define el tipo de datos semántico, mientras que UIKeyboardType define la distribución del teclado. El content type puede sobrescribir el keyboard type para una entrada óptima.

¿Qué tipos activan el autocompletado desde iCloud Keychain?

El autocompletado se activa con los tipos .username, .password, .newPassword, .emailAddress, .telephoneNumber y .creditCardNumber. El sistema asocia estos tipos con datos del llavero.

¿Funciona Text Content Type en WKWebView?

Sí, WKWebView admite Text Content Type para campos HTML con el atributo autocomplete. iOS asigna automáticamente los atributos autocomplete a los tipos de UITextContentType.

¿Es necesario especificar content type para UITextView?

Sí, UITextView también hereda UITextInputTraits y admite la propiedad textContentType. Esto es útil para campos de entrada multilínea de datos de contacto.

¿Qué ocurre con un tipo especificado incorrectamente?

El sistema puede sugerir datos incorrectos para el autocompletado o no sugerir nada. Por ejemplo, un campo de username con tipo .emailAddress podría sugerir un email en lugar de un login.

Resumen

  • Text Content Type es una etiqueta semántica para campos de entrada de iOS que determina el tipo de datos esperados
  • UITextContentType incluye más de 30 constantes para diferentes categorías: contactos, credenciales, ubicación, datos de pago
  • Teclado se adapta automáticamente al content type, mostrando los caracteres y la distribución necesarios
  • Autocompletado desde iCloud Keychain se activa solo cuando los tipos de campo están correctamente especificados
  • Mecanismo OTP en iOS 17+ inserta automáticamente códigos de SMS sin acceso a los mensajes
  • VoiceOver utiliza el content type para anunciar correctamente el propósito del campo
  • Recomendación: especifique el tipo más concreto para cada campo y pruebe el autocompletado en un dispositivo real

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.

Discutir el proyecto

Lea también