UIAlertView Text, Secure Text and Login Password Input
May 29, 2012
In iOS 5, UIAlertView was updated to include support for text input, secure text input and login/password input. Say goodbye to the creative code (read hacks) many of us have tried, to add similar functionality.
The screenshots below show examples of each new alert style:

To set the desired style, the following property has been added:
@property(nonatomic, assign) UIAlertViewStyle alertViewStyle |
Each of the news styles, including a reference to the default (original alert type) are below:
typedef enum { UIAlertViewStyleDefault = 0, UIAlertViewStyleSecureTextInput, UIAlertViewStylePlainTextInput, UIAlertViewStyleLoginAndPasswordInput } UIAlertViewStyle; |
Example code to create each style of alert follow:
// Plain text alert UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Feedback" message:[NSString stringWithFormat:@"Your comments are welcome:"] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert setAlertViewStyle:UIAlertViewStylePlainTextInput]; [alert show]; [alert release]; // Secure text alert UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Secure Information " message:[NSString stringWithFormat:@"Enter the project code name:"] delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil]; [alert setAlertViewStyle:UIAlertViewStyleSecureTextInput]; [alert show]; [alert release]; // Login and password alert UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login" message:[NSString stringWithFormat:@"Enter Login ID and Password:"] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput]; [alert show]; [alert release]; |
To access the text input from any of the above, call the method below::
- (UITextField *)textFieldAtIndex:(NSInteger)textFieldIndex |
The index is 0 to access the plain text, secure text and login ID values. To access the password text, the index must be set to 1.
- (void) alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex { // If plain text or secure text if ([alert alertViewStyle] == UIAlertViewStylePlainTextInput || [alert alertViewStyle] == UIAlertViewStyleSecureTextInput) NSLog(@"Text: %@", [[alert textFieldAtIndex:0] text]); // Login and password else if ([alert alertViewStyle] == UIAlertViewStyleLoginAndPasswordInput) { NSLog(@"Login: %@", [[alert textFieldAtIndex:0] text]); NSLog(@"Password: %@", [[alert textFieldAtIndex:1] text]); } } |



