I am using a custom UIAlertView
with UITextField
to get password from the user.
I have been told that this custom view may cause my App to get reject by Apple; is that correct? If so, what is the appropriate replacement for my custom control?
You can add a textfield to your UIAlertView
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"title" message:@"msg" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];
[alertView addSubview:txtField];
[alertView show];
[alertView release];
See my blog post of doing this and its perfectly accepted code by apple. I added this in some of my apps and they all got accepted. So use it without fear!!
Here is the code you can use :
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Your title here!" message:@"this gets covered" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];
[myTextField setBackgroundColor:[UIColor whiteColor]];
[myAlertView addSubview:myTextField];
CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0.0, 130.0);
[myAlertView setTransform:myTransform];
[myAlertView show];
[myAlertView release];
Check below blog tutorial for the complete solution.
If you're concerned about rejection, you can always roll your own view that has animations similar to a UIAlertView
. Check this question out here:
iOS 5 now supports this natively. Check out UIAlertView's alertViewStyle
property.
Quoting from the class reference
The UIAlertView class is intended to be used as-is and does not support subclassing. The view hierarchy for this class is private and must not be modified.
The last sentence appears to me that they don't want developers modifying the views.
I think there is a better way to solve this. Here is the code snippet
UIAlertView *passwordAlert = [[UIAlertView alloc]
initWithTitle:@"Enter Password" message:@""
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"Submit", nil];
passwordAlert.alertViewStyle = UIAlertViewStyleSecureTextInput;
(You can find related implementations in prodeveloper blog)
But this works fine on iOS 5.0 and above only. Please make a note of it. And Apple will certainly approve it.
Ya Apple approve the customization of UIAlertview. From iOS 5.0 apple gives alertview type to take credential input.
Here I listed a custom alertview which is able to work on older ios version and orientation custom alertview
thanks,
Naveen Shan
来源:https://stackoverflow.com/questions/5717292/how-to-customize-uialertview-will-apple-approve-it