Luiz de Prá Luiz de Prá - 5 months ago 97
iOS Question

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 learned that I can disable editing by setting
setEnabled
or
setUserInteractionEnabled:NO
to
NO
. Ok, but the TextField stop responding to touching and the picker don't show up.

What can I do to achieve it?

Answer

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.