отключите UIButton до тех пор, пока в UITextField не появится текст

#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;
 }
  

}