Простой способ отключить UITextField?
-
11-09-2019 - |
Вопрос
Есть ли простой способ отключить UITextField
в коде?
В моем приложении 12 UITextField
все они включены по умолчанию, но при обнаружении изменений в моем элементе управления сегментами я хочу отключить некоторые из UITextField
в зависимости от того, какой Сегмент выберет пользователь.
Просто нужно знать, как отключить его или сделать недоступным для редактирования?
Спасибо
Решение
В Objective-C:
textField.enabled = NO;
В Swift:
textField.isEnabled = false
Другие советы
Если вы также хотите указать, что текстовое поле отключено, вам следует добавить дополнительный код:
при использовании UITextBorderStyleRoundedRect вы можете выделять текст только серым цветом:
textField.enabled = NO;
textField.textColor = [UIColor lightGrayColor];
при использовании любого другого стиля вы также можете сделать фон серым:
textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
Это было бы проще всего , если бы у вас тоже было несколько текстовых полей:
в viewDidLoad:(установите делегат только для текстовых полей, которые не должны быть доступны для редактирования.
self.textfield.delegate=self;
и вставьте эту функцию делегирования:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return NO;
}
Вот и все!
Создайте категорию в UIView.
добавьте следующие методы в эту категорию.
-(void)disable {
self.alpha = 0.5;
self.userInteractionEnabled = FALSE;
}
-(void)enable {
self.alpha = 1.0;
self.userInteractionEnabled = TRUE;
}
тогда просто позвони
yourTextField.disable();
На самом деле, вы можете использовать это в любом представлении, которое вы хотите.
Вы должны соответствовать UITextFieldDelegate
и вернуться false
в этом методе.Таким образом, текстовое поле по-прежнему можно выбрать, но оно недоступно для редактирования и вырезания
Код находится в Swift 4
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return false
}