Filtering characters entered into a UITextField

iphone, objective-c, uitextfield

Solution

Look at `textField:shouldChangeCharactersInRange`

This method is called by the `UITextFieldDelegate` whenever new characters are typed or existing characters are deleted from the text field. You could return NO to not allow the change.

Problem

I have a UITextField in my application. I'd like to restrict the set of characters that can be can be entered into the field to a set that I have defined. I could filter the characters entered into the field when the text is committed using the UITextFieldDelegate method: ``` - (BOOL)textFieldShouldReturn:(UITextField*)textField ``` However, this gives the user a false impression as although restricted characters are removed from the final value, they were still visibly entered into the text field before pressing Return/Done/etc. What is the best approach that would prevent restricted characters appearing in the text field as they are selected on the keyboard? Note: I am operating under the assumption that I have little control over which keys are provided by the iPhone keyboard(s). I am aware that I can switch between various keyboard implementations but am under the impression that I can't disable specific keys. This assumption may be incorrect.

Original source