Search code examples
iosuitextfielduipickerview

How to disable UITextField editing but still accept touch?


I'm making a UITextField that has a UIPickerView as inputView. Its all good, except that I can edit by copy, paste, cut and select text, and I don't want it. Only the Picker should modify text field.

I've learned that I can disable editing by setting setEnabled or setUserInteractionEnabled to NO. Ok, but the TextField stop responding to touching and the picker don't show up.

What can I do to achieve it?


Solution

  • Using the textfield delegate, there's a method

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

    Return NO from this, and any attempt by the user to edit the text will be rejected.

    That way you can leave the field enabled but still prevent people pasting text into it.