Простой способ отключить UITextField? - PullRequest
43 голосов
/ 01 марта 2009

Есть ли простой способ отключить код UITextField в коде?

Мое приложение имеет 12 UITextField, которые все включены по умолчанию, но когда обнаруживается изменение в моем элементе управления сегментами, я хочу отключить некоторые из UITextField в зависимости от того, какой сегмент пользователь выбирает.

Просто нужно знать, как его отключить или сделать его недоступным для редактирования?

Спасибо

Ответы [ 5 ]

104 голосов
/ 01 марта 2009

В Objective-C:

textField.enabled = NO;

В Swift:

textField.isEnabled = false

Ссылка: UIControl.isEnabled

29 голосов
/ 01 мая 2012

Если вы также хотите указать, что текстовое поле отключено, вы должны добавить больше кода:

если используется UITextBorderStyleRoundedRect, вы можете только затемнить текст:

textField.enabled = NO;
textField.textColor = [UIColor lightGrayColor];

если вы используете любой другой стиль, вы также можете выделить серый фон:

textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
11 голосов
/ 08 июля 2013

Это будет проще всего, когда вы также используете несколько текстовых полей:

в viewDidLoad: (установите делегат только для текстовых полей, которые не должны редактироваться.

self.textfield.delegate=self;

и вставьте эту делегатскую функцию:

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

Вот так!

1 голос
/ 02 сентября 2016

Сделать категорию на UIView.

добавить следующие методы в эту категорию.

-(void)disable {
    self.alpha = 0.5;
    self.userInteractionEnabled = FALSE;
}

-(void)enable {
    self.alpha = 1.0;
    self.userInteractionEnabled = TRUE;
}

тогда просто позвоните

yourTextField.disable();

На самом деле, вы можете использовать это в любом виде.

0 голосов
/ 18 мая 2018

Вы должны соответствовать UITextFieldDelegate и возвращать false в этом методе. Таким образом, текстовое поле все еще можно выбрать, но оно не доступно для редактирования и вырезания

Код в Swift 4

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
  return false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...