如何定制UIAlertView?苹果会批准吗?

6

我正在使用自定义的 UIAlertViewUITextField 来获取用户的密码。

有人告诉我,这个自定义视图可能会导致我的应用被苹果拒绝;这是正确的吗?如果是,那么适当的替代方案是什么?


为什么你的应用程序会被苹果拒绝? - Nick Weaver
@Nick Weaver:在我的项目的最初阶段,我正在寻找一个带有密码UITextField的自定义UIAlertView,论坛提交者指出这可能违反了苹果的政策,因为用户可能会认为这是用于网络密码的Wifi对话框。 - Ahmad Kayyali
啊,我明白了,很有趣。不过,为什么不展示一个模态视图,它的外观和那些由苹果使用的UIAlertViews不同呢? - Nick Weaver
@Nick Weaver:谢谢你的建议,我会尝试那些已经在真实应用中测试并且可行的自定义视图。 - Ahmad Kayyali
8个回答

11

你可以在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];

非常感谢您的帖子,我在这方面没有任何问题,我的担忧是发布iPhone应用程序是否违反了苹果的政策。 - Ahmad Kayyali

4

请看我的博客文章,其中包含与苹果公司完全兼容的代码。我在我的一些应用程序中添加了这个功能并且它们都被接受了。所以毫不犹豫地使用它吧!

以下是你可以使用的代码:

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

2

1

我认为有更好的方法来解决这个问题。这是代码片段:

UIAlertView *passwordAlert = [[UIAlertView alloc]                                       
                              initWithTitle:@"Enter Password" message:@""
                              delegate:self 
                              cancelButtonTitle:nil                    
                              otherButtonTitles:@"Submit", nil];

passwordAlert.alertViewStyle = UIAlertViewStyleSecureTextInput;

您可以在prodeveloper博客中找到相关的实现。

但是这仅适用于iOS 5.0及以上版本。请注意。而且苹果肯定会批准它。


1

1

iOS 5现在原生支持此功能。请查看UIAlertView的alertViewStyle属性。


谢谢,我已经知道这个新功能了,我已经切换到它了。 - Ahmad Kayyali

1

引用自类参考

UIAlertView类旨在直接使用,不支持子类化。该类的视图层次结构是私有的,不得修改。

最后一句话似乎表明他们不希望开发人员修改视图。


0

嗨,Apple已经批准自定义UIAlertview了。

从iOS 5.0开始,Apple提供了alertview类型以输入凭据。

在这里,我列出了一个自定义的alertView,它能够在旧版iOS版本和方向上工作。 custom alertview

谢谢,

Naveen Shan


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接