Вопрос: 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
            }
        }
    }
}

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

Заранее спасибо!


14


источник


Ответы:


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

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

29



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