2011-04-01 21 views
6

Estoy implementando una barra de búsqueda desde mi base de datos local que busca desde db a medida que el usuario ingresa información. El problema es que concatco el carácter reciente y los anteriores y luego lo envío a buscar .¿Cómo puedo eliminar el carácter (último) cuando la llave de espalda es pressed.I estoy usandoUITextField Cómo comprobar si se presiona una tecla de borrar

 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

Gracias por las respuestas

Respuesta

17

Usted puede obtener la cadena que se supone que es en el campo de texto después de esta método:

NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

Y ese neString es probable que pueda usar 'tal cual' para buscar en la base de datos.

Si lo que desea es obtener el evento cuando el usuario elimina algunos caracteres en textField - entonces usted puede comprobarlo de la siguiente manera:

if ([string length] == 0 && range.length > 0) 
    //Some characters deleted 
2

idea mejor - en textField shouldChangeCharactersInRange: replacementString: establecer un condicional para volver nO cuando no hay más caracteres ...

if ((range.location == 0) && (string.length == 0)) 
{   
    NSLog(@"is cleared!"); 
    return NO; 
} 

return YES; 
+0

'range.location' no siempre es 0. El usuario puede eliminar desde otra ubicación. – Daniel

0
if (self.textView.text.length > 0) 
{ 
    [self.textView deleteBackward]; 
} 
3

para los usuarios de SWIFT:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 

    if string.characters.count == 0 && range.length > 0 { 
     // Back pressed 
     return false 
    } 

    return true 
} 
Cuestiones relacionadas