2012-07-23 8 views
26

ho solo chiesto a question su come monitorare le modifiche a un UITextField ed ho ricevuto questa risposta:Conoscendo la stringa completa cambiato nel textField: shouldChangeCharactersInRange: ReplacementString:

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

Questo funziona, ma la stringa di sostituzione non è tutta la stringa, proprio quello che sta aggiungendo. Come posso ottenere l'intera stringa? Il mio obiettivo è vedere se la stringa nel campo di testo è vuota o uguale a un certo numero (in diversi scenari).

Si noti che l'uscita del campo di testo non funziona in questo caso, poiché questo metodo viene chiamato prima che il testo nel campo cambi.

+0

TextField.text rappresenta l'intera stringa. Almeno è tutta la vecchia corda. –

risposta

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

Che dire se usano backspace? Funzionerà ancora? Non ha funzionato quando ho provato ad accodare. Se backspace, non c'è una stringa di sostituzione, ma la stringa textField sarà una in meno. Questo potrebbe presentare un problema se sto verificando un numero diverso da zero, e il campo testo è, diciamo, 5, e quindi backspace. –

+3

Sì, funziona per i backspaces. –

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 versione

In Swift Dobbiamo lanciare textField's testo NSString. Quanto segue può essere utile:

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

Swift 4

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