UIAlertViewStylePlainTextInput возвращает ключевой делегат

Я использую одну из новых функций iOS 5 для UIAlertView. Я создаю UIAlertView следующим образом:

UIAlertView *scanCode = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Some Title", @"") message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:NSLocalizedString(@"OK", @""), nil];
        [scanCode setAlertViewStyle:UIAlertViewStylePlainTextInput];
        scanCode.tag = 1234;
        [scanCode show];
        [scanCode release];

Теперь я использую делегат:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (alertView.tag == 1234) {
        if (buttonIndex == 1)
        {
            //do something
            }
        }
    }
}

Теперь я хочу симулировать ключ ввода, поэтому, когда пользователь нажимает на клавиатуру, то происходит то же самое, когда нажимаете кнопку OK предупреждения. Как я могу это сделать?

Спасибо заранее!

Ответы

Ответ 1

Убедитесь, что ваш класс соответствует протоколу <UITextFieldDelegate>, создайте свойство UIAlertView a для вашего класса и добавьте следующую строку в свой код установки...

self.scanCode = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Some Title", @"") message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:NSLocalizedString(@"OK", @""), nil];
[self.scanCode setAlertViewStyle:UIAlertViewStylePlainTextInput];
self.scanCode.tag = 1234;
//add this...
[[self.scanCode textFieldAtIndex:0] setDelegate:self];
[self.scanCode show];

Получив делегат для текстового поля ввода, вы можете узнать, когда нажата клавиша возврата на клавиатуре. Затем в файле .m для вашего класса вы реализуете метод делегата ниже и сообщаете, что предупреждение исчезает:

-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [self.scanCode dismissWithClickedButtonIndex:self.scanCode.firstOtherButtonIndex animated:YES];
    return YES;
}