UIAlertViewStylePlainTextInput ключ возврата делегата - PullRequest
14 голосов
/ 25 января 2012

Я использую одну из новых функций 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 Ответ

29 голосов
/ 25 января 2012

Убедитесь, что ваш класс соответствует протоколу <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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...