¿Qué es range in- (BOOL) textField: (UITextField *) theTextField shouldChangeCharactersInRange: (NSRange) range replaceString: (NSString *) string?

cadena : este es el texto que se ingresará en el campo de texto justo después de que finalice esta llamada y devuelva SÍ.

rango : el rango donde se llevaría a cabo el reemplazo de caracteres o se insertará una cadena. Hay algunos casos para esto: –

A) Si ha seleccionado una parte del texto, entonces ese es el rango.

B) Si está ingresando una letra con una pulsación de tecla, entonces el rango está al final de una cadena para una longitud de carácter más.

C) Si está pegando algo en algún lugar de la cadena, el rango representa esa región donde se realizará el reemplazo del texto.

En todos los casos, el rango es una parte del texto (tal vez al final del texto) donde la cadena se reemplazaría después de que esta llamada devuelva SÍ.

NSString * updatedText =

[textField.text stringByReplacingCharactersInRange: range withString: string]

le daría el valor del texto que aparecería en el campo de texto después de que se haya realizado el reemplazo. Observe estos valores mientras elimina caracteres al revés.

Este es un buen lugar para poner validaciones para la mayoría de los campos de texto, si un campo de texto no debe permitir que el valor updatedText esté presente en él, devuelva NO, esto detendrá el reemplazo.

Espero que eso aclare el asunto.

“Cadena” es básicamente el carácter que escribe.
El rango tiene dos atributos de longitud y ubicación.
La ubicación define el índice en el que escribe el carácter y la Longitud define la longitud del texto que escribe, que siempre sale 0 para cada nuevo carácter.
Por ejemplo: si escribo Gaurav y luego ingreso L, en este caso su “Cadena” sería L y la ubicación sería 6 (0 a 5 para Gaurav) y la longitud sería 0.