У меня была проблема, потому что я запускал оповещение, когда в моем представлении вызывался метод делегата UITextField textFieldDidBeginEditing, а затем я заполнял его содержимым текстового поля представления оповещения. Это означало, что UITextField, на мой взгляд, стал первым респондентом, и я не мог найти способ уйти в отставку. Так что, если у вас есть проблема, это потому, что что-то еще становится первым респондентом, прежде чем отображается UIAlert. Подумайте, как вы вызываете предупреждение.
Я смирился с использованием жеста касания на моем UITextField, который затем вызывает UIAlertView с UIAlertViewStylePlainTextInput, и он отлично работает.
Некоторый код ниже:
-(void)addTextFieldToView{
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 31)];
textField.backgroundColor = [UIColor whiteColor];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.textAlignment = UITextAlignmentCenter;
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showAlertWithTextField:)];
[textField addGestureRecognizer:tapGestureRecognizer];
[self.view addSubview:textField];
}
-(void)showAlertWithTextField:(UITapGestureRecognizer *)gesture{
UIAlertView* dialog = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[dialog setAlertViewStyle:UIAlertViewStylePlainTextInput];
[dialog show];
}