UIAlertView Text, Secure Text and Login Password Input

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,
} 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" 
  [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" 
  [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]);  

Comments are closed.