Установить UITextField как не редактируемый - Objective C

    [Number.editable = NO];
    [Number resignFirstResponder];
    [Password.editable = NO];
    [Password resignFirstResponder];

Я получаю сообщение об ошибке

Запрос для члена 'editable' в чем-то не структуре или союзе

: S

Спасибо

Ответ 1

Во-первых, [...] не нужны, если вы не отправляете сообщение.

Number.editable = NO;
[Number resignFirstResponder];
Password.editable = NO;
[Password resignFirstResponder];

Но это не является причиной ошибки. Свойство .editable задано только для UITextView, а не UITextField. Вы должны установить свойство .enabled для UITextField (обратите внимание, что UITextField является UIControl).

Number.enabled = NO;
...

Ответ 2

Кроме того, вы можете использовать методы делегата.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
  return NO;
}

Это будет трюк, я предпочитаю этот метод с установкой textField.enabled = YES, когда вероятность того, что способность редактировать изменится в течение жизненного цикла приложения.

Ответ 3

textField.userInteractionEnabled = NO;

Надеюсь, что это поможет.

Ответ 4

Возврат NO из shouldChangeCharactersInRange был бы лучшим выбором, потому что если текст длиннее ширины текстового поля, то выше решение даст проблему, потому что пользователь не сможет увидеть весь текст (т.е. текст скрыт за пределами ширины текстового поля)