iPhone how to get UITextField's text while typing?

Alex Stone picture Alex Stone · Apr 28, 2012 · Viewed 55.7k times · Source

I'm trying to show changes made to a UITextField on a separate UILabel. Is there a way to capture full text of the UITextField after each character the user types in? Currently I'm using this method, but it does not capture the last character that the user has entered.

I know that UITextView has "didChange" method, but I could not find that method for a UITextField.

//does not capture the last character

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

        [self updateTextLabelsWithText: textField.text];

    return YES;
}

How can I take text out of UITextField after each character entered?

Thank you!

Answer

Mrunal picture Mrunal · Apr 28, 2012
  1. First add one UITextField and UILabel to storyboard / nib
  2. Now assign IBOutlet for UILabel (Here I have used myLabel)
  3. Assign UITextFieldDelegate to file owner, also implement the same delegate in .h file
  4. Use these lines of code:

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
        [self updateTextLabelsWithText: newString];
    
        return YES;
    }
    
    -(void)updateTextLabelsWithText:(NSString *)string
    {
         [myLabel setText:string];
    }
    

Hope this helps.