In a recent discussion with the UI designers for an upcoming iPhone application, I was asked if it’s possible to create an Alert that would overlay the splash screen, prompting for a username and password.
My original response (based on searching the documentation) was a regrettable, no. However, after some digging I did come upon an undocumented method inside the UIAlertView: addTextFieldWithValue. What follows is a screenshot of how you might use this feature:
The code for the alert example follows. Notice how you can create a pointer to the UITextFields and modify its attributes, very cool.
In the .h file
UITextField *textfieldName;
UITextField *textfieldPassword;
In the .m file
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
// Clicked the Submit button
if (buttonIndex != [alertView cancelButtonIndex])
{
NSLog(@"Name: %@", textfieldName.text);
NSLog(@"Name: %@", textfieldPassword.text);
}
}
...
- (void) someMethod
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Please Login" message:@""
delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Submit", nil];
[alert addTextFieldWithValue:@"" label:@"User Name"];
[alert addTextFieldWithValue:@"" label:@"Password"];
// Username
textfieldName = [alert textFieldAtIndex:0];
textfieldName.keyboardType = UIKeyboardTypeAlphabet;
textfieldName.keyboardAppearance = UIKeyboardAppearanceAlert;
textfieldName.autocorrectionType = UITextAutocorrectionTypeNo;
// Password
textfieldPassword = [alert textFieldAtIndex:1];
textfieldPassword.clearButtonMode = UITextFieldViewModeWhileEditing;
textfieldPassword.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
textfieldPassword.keyboardAppearance = UIKeyboardAppearanceAlert;
textfieldPassword.autocorrectionType = UITextAutocorrectionTypeNo;
textfieldPassword.secureTextEntry = YES;
[alert show];
}
*Update: This morning I was running an application that my friend Rodney Aiglstorfer wrote, mJaiku (mJaiku on the App Store), I noticed Rodney is using this idea when the application prompts the user to add a new location (see below). Guess I should of inquired with Rodney before I spent time researching this :)
BTW, if you are a Jaiku user, mJaiku for the iPhone is a must have!