Легкий способ отключить UITextField?

голоса
42

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

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

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

благодаря

Задан 01/03/2009 в 13:16
источник пользователем
На других языках...                            


5 ответов

голоса
98

В Objective-C:

textField.enabled = NO;

В Swift:

textField.isEnabled = false

Справка: UIControl.isEnabled

Ответил 01/03/2009 в 13:31
источник пользователем

голоса
27

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

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

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

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

textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
Ответил 01/05/2012 в 09:56
источник пользователем

голоса
10

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

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

self.textfield.delegate=self;

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

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

Это оно!

Ответил 08/07/2013 в 18:40
источник пользователем

голоса
1

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

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

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

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

то просто позвоните

yourTextField.disable();

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

Ответил 02/09/2016 в 06:51
источник пользователем

голоса
-1

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

Код в Swift 4

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
  return false
}
Ответил 18/05/2018 в 12:40
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more