How to customize UIAlertView? Will Apple approve i

2019-03-13 23:06发布

问题:

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?

回答1:

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];


回答2:

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];


回答3:

Check below blog tutorial for the complete solution.

http://junecloud.com/journal/code/displaying-a-password-or-text-entry-prompt-on-the-iphone.html?cmd=success#comment3870



回答4:

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:

How can I customize an iOS alert view?



回答5:

iOS 5 now supports this natively. Check out UIAlertView's alertViewStyle property.



回答6:

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.



回答7:

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.



回答8:

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