Назначьте фокус UITextField во время проверки

У меня есть метод - (void) validateFormInput: (UITextField *) textField, который вызывается при нажатии кнопки «отправить» формы. Метод делает следующее:

1) Проверяет текст в заданном поле textField 2) Если он недействителен, выдает всплывающее окно с предупреждением, рисует красную рамку вокруг UITextField и возвращает фокус этому UITextField.

Проблема в том, что я не возвращаю фокус обратно на недопустимый UITextField.

Вот метод проверки - почему это не переключает внимание на недопустимый UITextField?

Спасибо!

//Called when form "submit" button is pressed
-(void)validateFormInput:(UITextField *)textField{
    //If Validation fails... 
    if([textField.text length] <1){ 
        //simple test case        
        textField.layer.borderWidth = 2.0f;
        textField.layer.borderColor = [[UIColor redColor] CGColor];
        textField.layer.cornerRadius = 5;
        textField.clipsToBounds = YES;

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert"
            message:@"Please add a title"
            delegate:nil
            cancelButtonTitle:@"OK"
            otherButtonTitles: nil];
        [alert show];
        alert = nil;
        [textField becomeFirstResponder];               
    }
}

person Slinky    schedule 11.06.2012    source источник
comment
оффтоп: у вас утечка UIAlertView, вы должны добавить [alert release]; после его показа.   -  person mvds    schedule 12.06.2012
comment
Фактически, этот проект находится в рамках ARC.   -  person Slinky    schedule 12.06.2012


Ответы (1)


Вам нужно добавить делегата в себя и реализовать метод делегата alertView: didDismissWithButtonIndex :. Не забывайте соответствовать протоколу UIAlertViewDelegate.

Когда этот метод вызывается, сделайте свой textField первым респондентом.

person Romit Thakur    schedule 12.06.2012