отключите UIButton, пока в UITextField не появится текст - PullRequest
6 голосов
/ 21 апреля 2011

Как отключить кнопку UIB, пока в UITextField не будет текста. Код, который у меня есть, не работает.

    if ([nameTextField.text isEqualToString: @""]) {
            [myButton setEnabled:NO];
}

Ответы [ 7 ]

10 голосов
/ 11 мая 2012

Вот код из сообщения в блоге 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];
    }
}
9 голосов
/ 21 апреля 2011

Держите кнопку отключенной. Реализуйте UITextFieldDelegate и реализуйте метод:

- (void)textFieldDidBeginEditing:(UITextField *)textField;       

Проверьте длину текста в textField и, если оно больше 0, активируйте кнопку.

1 голос
/ 21 апреля 2011

Сначала проверьте, что ваши UITextField и UIButton связаны со сборщиками интерфейсов UITextField и UIButton или нет?

А также напишите свой код нижеприведенным методом:

- (void)textFieldDidBeginEditing:(UITextField *)textField;

1 голос
/ 21 апреля 2011

Я бы дважды проверил, чтобы убедиться, что оператор if вводится - иногда с выходами может быть немного сложно.

Еще один способ добиться подобных результатов - использовать следующие методы.

– addTarget:action:forControlEvents:
– removeTarget:action:forControlEvents:
1 голос
/ 21 апреля 2011

Это должно сделать это. Попробуйте это,

if ([nameTextField.text isEqualToString: @""] == TRUE) {
    [myButton setEnabled:NO];
}
1 голос
/ 21 апреля 2011

Сначала отключите кнопку, затем используйте это:

if (![nameTextField.text isEqualToString: @""]) {
            [myButton setEnabled:YES];
}
0 голосов
/ 11 сентября 2015

установите его отключенным во время выделения, а затем используйте метод делегата textField с условием.

-(void)textFieldDidBeginEditing:(UITextField *)textfield {
 if(yourButton isEqual:@"") {
    yourButton.enabled = NO;
 }else {
    your.enabled = YES;
 }

}

...