Primero, para ser claros, a diferencia de una aplicación web, la validación no tiene que suceder dos veces (lado del cliente, luego del lado del servidor). Puede codificar (y sí, siempre hay excepciones) con la expectativa de que un usuario solo podrá ingresar lo que los controles le dan.
Entonces, para responder a su pregunta, valide los campos utilizando métodos delegados proporcionados por el control. Tome UITextField, puede notificarle sobre cambios en tiempo real a través de sus métodos delegados (o notificaciones).
Tome este fragmento, que solo permite que una entrada numérica de estilo de banco se complete desde la derecha y también tiene un límite de caracteres predeterminado de 40 caracteres para cualquier otro campo de texto que use la clase como delegado:
- ¿Cuáles son las mejores aplicaciones de iOS basadas en voz?
- Realizar código en segundo plano durante mucho tiempo en iOS (Swift), ¿es posible?
- ¿Cuál es el mejor desarrollador de Android o desarrollador de iOS, como carrera?
- ¿Me puede recomendar una empresa que pueda crear un sitio web para mi aplicación?
- ¿Existen limitaciones en el uso de las notificaciones de iOS de Apple que no sean técnicas?
deje AMOUNT_MAX = 10_000_000
dejar DEFAULT_CHARACTER_LIMIT = 40
cantidad var = 0.0
func textField (_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replaceString string: String) -> Bool {
let count = textField.text? .characters.count ?? 0 0
let char = string.cString (usando: .utf8)
let isBackspace = strcmp (char, “\\ b”) == -92
switch (textField) {
cantidad del casoTextField:
si se deja convertidoString = Doble (cadena) {
cantidad * = 10
cantidad + = convertString / 100
} más {
if (isBackspace) {
cantidad / = 10
cantidad = piso (cantidad * 100) / 100
}
}
if (cantidad <AMOUNT_MAX) {
let formatter = NumberFormatter ()
formatter.numberStyle = .currency
formatter.maximumFractionDigits = 2
formatter.locale = Locale (identificador: Locale.current.identifier)
textField.text = formatter.string (de: cantidad como NSNumber)
}
falso retorno
defecto:
if (isBackspace) {
volver verdadero
} más {
return (cuenta <= DEFAULT_CHARACTER_LIMIT)
}
}
}