Uso de Text Field y Text Editor con Validaciones en SwiftUI
Clase 10 de 23 • Curso de Desarrollo de Aplicaciones con SwiftUI
Resumen
El uso de text fields y text editors en tus aplicaciones puede llevar la interacción con el usuario a otro nivel, proporcionando campos de texto para ingrese datos de manera eficiente. Los text fields son ideales para entradas de texto cortas, mientras que los text editors son más adecuados para textos largos. Integra estas estructuras y verás cómo tu aplicación se convierte en una herramienta más poderosa y versátil.
¿Cómo crear un text field en SwiftUI?
Crear e integrar un text field en SwiftUI es bastante sencillo y altamente personalizable. A continuación, te mostramos el paso a paso:
-
Crear un archivo de práctica: ve al folder de extras, clic derecho, selecciona "new file from template", elige SwiftUI y nómbralo, por ejemplo, "text field practice".
-
Agregar el text field:
- Borra el texto existente.
- Introduce la palabra
TextField
junto con un placeholder como"Enter your name"
. - Para vincular el text field con un estado, define un
@State var name
de tipoString
, inicialmente vacío.
@State private var name: String = ""
var body: some View {
TextField("Enter your name", text: $name)
}
- Personalizar el text field:
- Modifica la fuente a
headline
. - Incluye
padding
para separarlo de los bordes. - Define un color de fondo (
gray
conopacity
de 0.2). - Agrega un
cornerRadius
de 8 para las esquinas.
.font(.headline)
.padding()
.background(Color.gray.opacity(0.2))
.cornerRadius(8)
- Validaciones de texto:
- Usa
.onChange(of: name)
para escuchar cambios. - Imprime el nuevo valor o implementa una validación personalizada.
.onChange(of: name) { newValue in
if newValue.count > 10 {
// Lógica de validación
}
}
¿Cómo integrar validaciones complejas en un text field?
Las validaciones son cruciales para asegurar que los datos ingresados cumplan con ciertos criterios antes de ser procesados. En este caso, podrías cambiar el color del text field si el texto supera los 10 caracteres:
- Definir un estado para el color:
@State private var color: Color = Color.gray.opacity(0.2)
- Modificar el color según la validación:
- Si
name.count
supera los 10 caracteres, cambia el fondo a rojo. - Si no, mantén el color gris.
.onChange(of: name) { newValue in
color = newValue.count > 10 ? Color.red : Color.gray.opacity(0.2)
}
¿Cuál es la función del text editor en SwiftUI?
El TextEditor
ofrece la funcionalidad de texto largo, ideal para notas o descripciones extensas dentro de una aplicación.
- Agregar un text editor:
- Comenta el
TextField
y añadeTextEditor
con una referencia a un estado similar.
@State private var largeText: String = ""
var body: some View {
TextEditor(text: $largeText)
}
- Personalizar el text editor:
- Usa mismos modificadores como fuente, background, y padding para mantener consistencia.
.font(.headline)
.padding()
.background(Color.gray.opacity(0.2))
.cornerRadius(8)
.scrollContentBackground(.hidden)
- Aplicar validaciones similares al text field:
- Modifica las validaciones para textos más largos, ajustando el número de caracteres permitidos.
.onChange(of: largeText) { newValue in
color = newValue.count > 50 ? Color.red : Color.gray.opacity(0.2)
}
Con estos simples pasos y configuraciones, tus aplicaciones serán mucho más interactivas y funcionales, fomentando una mejor comunicación gracias a entradas de texto robustas y flexibles. ¡No dudes en personalizarlos según las necesidades y la estética de tu app! También, compartir tus creaciones con la comunidad puede inspirar a otros y fomentar el aprendizaje colectivo.