0

我正在创建一个应用程序,有一次我想通过自定义 UIAlertView 询问用户意见。经过大量研究并阅读了有关此主题的内容后,我对某些事情感到有些困惑...

我们可以将哪些对象(UITextfields、UIImages...)添加到 UIAlertView 中?

因为我发现了这个:

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

(有关更多信息,请参阅此链接)

因此,例如,如果我不想要带有消息和标题参数的蓝框,我只能执行以下代码:

UIAlertView *alert = [[UIAlertView alloc] init];
[alert addSubview:a_UIButton];
[alert addSubview:a_UIImageview]; 
[alert show];

因此,使用这种代码,我可以获得将所有应用程序置于暂停模式的优势(如果它有效!),所有这些都是自定义的。但有可能吗?可以拒绝吗?

非常感谢 !

4

2 回答 2

3

与其尝试自定义“ UIAlertView”,不如直接创建自己的自定义 AlertView(来自“ UIView”)并在要显示时将其添加为子视图?

我们不知道 Apple 是否(或如何)在未来的 iOS 版本(例如 iOS 7)中改变 UIAlertView 的内部架构,这将破坏迄今为止所有应用程序中对其所做的所有各种定制. 这就是苹果在他们的文档中提出这个警告的原因。

于 2013-04-03T22:28:50.443 回答
1

相反,我建议您制作一个自定义 UIView,并使用与 UIAlertView 类似的动画来显示它。然后,您可以添加任何您想要的 UI 元素。如果文档说视图层次结构是私有的,我会不理会它。

如果您只想在警报视图中添加一个文本字段,则 iOS 5 及更高版本支持该功能:

[alertView setAlertViewStyle:UIAlertViewStylePlainTextInput];
于 2013-04-03T22:30:36.937 回答