#iphone #objective-c #ios #uibutton #uitextfield
#iPhone #objective-c #iOS #uibutton #uitextfield
Вопрос:
Как мне отключить UIButton до тех пор, пока в UITextField не появится текст. Имеющийся у меня код, похоже, не работает.
if ([nameTextField.text isEqualToString: @""]) {
[myButton setEnabled:NO];
}
Комментарии:
1. Спасибо за все ответы. Я написал об этом небольшое сообщение в блоге здесь: blog.tarams.com/?p=339
Ответ №1:
Вот код из сообщения в блоге kingthong, который сработал для меня:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.saveButton setEnabled:NO];
[[self myTextField] becomeFirstResponder];
[myTextField addTarget:self
action:@selector(textFieldDidChange)
forControlEvents:UIControlEventEditingChanged];
}
- (void)textFieldDidChange
{
if ([self.myTextField.text isEqualToString:@""]) {
[self.saveButton setEnabled:NO];
}
else {
[self.saveButton setEnabled:YES];
}
}
Комментарии:
1. Отличный ответ, лучший, который я смог найти!
Ответ №2:
Оставьте кнопку отключенной. Внедрите UITextFieldDelegate и реализуйте метод:
- (void)textFieldDidBeginEditing:(UITextField *)textField;
Проверьте длину текста в текстовом поле и, если она больше 0, включите кнопку.
Комментарии:
1. У меня это не сработало (мое текстовое поле начиналось как first responder, поэтому оно никогда не вызывалось). Кроме того, это не работает, когда пользователь вводит текст, а затем удаляет все это. Я использовал код из сообщения в блоге @kingthong, чтобы заставить это работать (код ниже).
Ответ №3:
Сначала отключите кнопку, затем используйте это:
if (![nameTextField.text isEqualToString: @""]) {
[myButton setEnabled:YES];
}
Ответ №4:
Я бы дважды проверил, чтобы убедиться, что вводится оператор if — иногда с выходами может быть немного сложнее.
Другой способ добиться аналогичных результатов — использовать следующие методы.
– addTarget:action:forControlEvents:
– removeTarget:action:forControlEvents:
Ответ №5:
Это должно сработать. Попробуйте это,
if ([nameTextField.text isEqualToString: @""] == TRUE) {
[myButton setEnabled:NO];
}
Ответ №6:
Сначала проверьте, подключены ли ваши UITextField и UIButton к разработчикам интерфейса UITextField и UIButton или нет?
А также напишите свой код в приведенном ниже методе :
- (void)textFieldDidBeginEditing:(UITextField *)textField;
Ответ №7:
отключите его во время выделения, а затем используйте метод делегирования текстового поля с условием .
-(void)textFieldDidBeginEditing:(UITextField *)textfield {
if(yourButton isEqual:@"") {
yourButton.enabled = NO;
}else {
your.enabled = YES;
}
}