如何自定义 UIAlertView?苹果会批准吗?
Posted
技术标签:
【中文标题】如何自定义 UIAlertView?苹果会批准吗?【英文标题】:How to customize UIAlertView? Will Apple approve it? 【发布时间】:2011-04-19 13:41:19 【问题描述】:我正在使用自定义 UIAlertView
和 UITextField
从用户那里获取密码。
我被告知此自定义视图可能会导致我的应用程序被 Apple 拒绝;那是对的吗?如果是这样,我的自定义控件的合适替代品是什么?
【问题讨论】:
为什么你的应用会被苹果拒绝? @Nick Weaver:回到我项目的第一阶段,我正在寻找带有密码 UITextField 的自定义 UIAlertView,论坛提交者指出这可能违反 APPLE 政策,因为用户可能认为这是网络密码的 Wifi 对话框。 啊,我明白了,很有趣。不管怎样,你为什么不展示一个与 Apple 使用的 UIAlertView 的外观和感觉确实不同的模态视图。 @Nick Weaver:感谢您的建议,我将尝试那些已经过测试并正在实际应用程序中工作的自定义视图。 【参考方案1】:您可以向 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 应用程序的政策。【参考方案2】:请参阅我的blog post 这样做以及苹果完全接受的代码。我在我的一些应用程序中添加了这个,它们都被接受了。所以不要害怕使用它!
这里是你可以使用的代码:
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】:查看下面的博客教程以获得完整的解决方案。
http://junecloud.com/journal/code/displaying-a-password-or-text-entry-prompt-on-the-iphone.html?cmd=success#comment3870
【讨论】:
【参考方案4】:如果您担心被拒绝,您可以随时滚动您自己的视图,该视图具有类似于UIAlertView
的动画。在这里检查这个问题:
How can I customize an ios alert view?
【讨论】:
【参考方案5】:iOS 5 现在原生支持这一点。查看 UIAlertView 的 alertViewStyle
属性。
【讨论】:
谢谢,我知道这个新功能,我已经切换到它了。【参考方案6】:引用class reference
UIAlertView 类旨在按原样使用,而不是 支持子类化。此类的视图层次结构是私有的,并且 不得修改。
在我看来,最后一句话是他们不希望开发人员修改视图。
【讨论】:
【参考方案7】:我认为有更好的方法来解决这个问题。这是代码sn-p
UIAlertView *passwordAlert = [[UIAlertView alloc]
initWithTitle:@"Enter Password" message:@""
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"Submit", nil];
passwordAlert.alertViewStyle = UIAlertViewStyleSecureTextInput;
(可以在prodeveloper博客中找到相关实现)
但这仅适用于 iOS 5.0 及更高版本。请记下它。苹果肯定会批准它。
【讨论】:
【参考方案8】:Ya Apple 批准 UIAlertview 的自定义。 从 iOS 5.0 开始,苹果提供了 alertview 类型来获取凭据输入。
这里我列出了一个自定义的警报视图,它能够在旧的 ios 版本和方向上工作 custom alertview
谢谢,
纳文山
【讨论】:
以上是关于如何自定义 UIAlertView?苹果会批准吗?的主要内容,如果未能解决你的问题,请参考以下文章