我正在创建一个应用程序,有一刻我想用自定义UIAlertView询问用户意见。经过大量的研究和阅读这个主题后,我对某些事情感到有些困惑......
我们可以在UIAlertView中添加哪些对象(UITextfields,UIImages ...)?
因为我发现了这个:
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];
(有关更多信息,请参阅this link)
因此,例如,如果我不想要带有消息和标题参数的蓝框,我是否只能执行此代码:
UIAlertView *alert = [[UIAlertView alloc] init];
[alert addSubview:a_UIButton];
[alert addSubview:a_UIImageview];
[alert show];
因此,使用这种代码,我可以获得所有应用程序的暂停模式的优势(如果它的工作!),并且所有这些都是自定义的。但这可能吗?可能是拒绝吗?
非常感谢!
答案 0 :(得分:3)
为什么不创建自己的自定义AlertView(来自“UIAlertView
”),并在需要时添加 作为子视图,而不是尝试自定义“UIView
”显示它?
我们不知道Apple是否(或如何)在未来版本的iOS(例如iOS 7)中更改了UIAlertView的内部架构,这将破坏在所有已经离开的应用程序中对其进行的各种自定义它到目前为止。这就是为什么Apple在他们的文档中提出了这个警告。
答案 1 :(得分:1)
我建议你做一个自定义的UIView,然后用与UIAlertView类似的动画显示它。然后,您可以添加您想要的任何UI元素。如果文档说视图层次结构是私有的,我会不管它。
如果您只想在警报视图中添加文本字段,则iOS 5及更高版本支持使用以下功能:
[alertView setAlertViewStyle:UIAlertViewStylePlainTextInput];