2012-07-23 8 views
26

simplemente le pregunté a question acerca de cómo supervisar cambios en un UITextField y recibió esta respuesta:Conociendo la cadena cambiado completo en textField shouldChangeCharactersInRange: replacementString:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementStr { 
    // Enable "Next" if you like what's entered in the replacementStr 
} 

Esto funciona, pero la cadena de reemplazo no es la totalidad cadena, solo lo que está agregando. ¿Cómo puedo obtener toda la cadena? Mi objetivo es ver si la cadena en el campo de texto está en blanco o es igual a un cierto número (en diferentes escenarios).

Tenga en cuenta que la salida al campo de texto no funciona en este caso, porque este método se está llamando antes de que el texto en el campo cambie.

+0

TextField.text es toda la cadena. Al menos es toda la cadena anterior. –

Respuesta

65
NSString * proposedNewString = [[textField text] stringByReplacingCharactersInRange:range withString:replacementString]; 
+1

¿Qué tal si usan el retroceso? ¿Esto todavía funciona? No funcionó cuando intenté agregar. Si retroceden, no hay cadena de reemplazo, pero la cadena textField será una menos. Esto puede presentar un problema si estoy buscando un número distinto de cero, y textField es, por ejemplo, 5, y luego retroceden. –

+3

Sí, funciona para retrocesos. –

0
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

// [textField2 setText:[textField1.text stringByReplacingCharactersInRange:range withString:string]]; 
    NSLog(@"%@",searchStr); 
    return YES; 
} 
9

Swift Versión

En Swift Tenemos que echar textField's texto para NSString. Lo siguiente puede ser útil:

let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string) 

Swift 4

let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string) 
Cuestiones relacionadas