I wanted to show an alertView to a user with a textField. This is what was achieved:
First, I tried to use Block Alerts and ActionSheets, but I failed. Then I discovered, that there is a standart way to do this. There are some UIAlertView styles available beyond a default style: UIAlertViewStyleLoginAndPasswordInput, UIAlertViewStylePlainTextInput and UIAlertViewStyleSecureTextInput. In this case we will use the second one. Works on iOS 5 and later:
UIAlertView *av = [[UIAlertView alloc] initWithTitle:LS(@"Document file name") message:@"Please enter document file name." delegate:self cancelButtonTitle:LS(@"Cancel") otherButtonTitles:LS(@"Save"), nil];
av.alertViewStyle = UIAlertViewStylePlainTextInput;
[av textFieldAtIndex:0].delegate = self;
[av textFieldAtIndex:0].text = self.mcAttachDisplayed.fileName;
[av show];
Then, you should define two protocols UITextFieldDelegate, UIAlertViewDelegate.
And implement methods:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"Button index clicked:%d", buttonIndex);
switch (buttonIndex) {
case 0:
break;
case 1:{
NSLog(@"Save Clicked");
UITextField *textField = [alertView textFieldAtIndex:0];
NSString *text = textField.text;
break;
}
default:
break;
}
}
References:
StackOverFlow question