9

任何人都有代码可以做到这一点:

UIAlertViewHack
(来源:booleanmagic.com

或者更好的是,使用 UIAlertView 对象的带有图像的 3x2 按钮网格?

我不关心文本字段,它是我想要的网格中的按钮(最好是图像而不是文本)。

4

5 回答 5

27

我认为您最好的选择是忘记自定义 UIAlert 视图并自己构建自定义视图。

一方面,您所显示的实际上不是“警报”,因此它与 UIAlertView 的设计目的背道而驰。这意味着您正在更改用户的 UI 范例,这绝不是一个好主意。

其次,将自定义视图设置为动画比尝试破解 UIAlertView 让它做你想做的事情要容易得多。

于 2009-02-16T06:15:21.763 回答
11

首先,您需要使警报框更大以容纳您的控件,但它必须放在中心。

为此,您无需设置帧大小,而是将带有“\n”的消息文本作为 necc。例如:

alert = [[UIAlertView alloc] initWithTitle:@"Rate this picture."
message:@"Tap a star to rate.\n\n\n\n " /*------ look at here!!----*/
delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil];

然后使用 UIAlertViewDelegate 作为警报视图。

覆盖其 viewWillAppear:添加您的按钮并将其框架手动设置在所需位置。

或者:使用视图控制器创建整个视图,并将视图添加到警报框中,例如:

[myalertview addSubvew:mycomplexalert];

希望这会对您有所帮助:)

我正在使用警报框对星图、twitter、fb 反馈等进行评级输入。

更新 iOS7:

对于 iOS 7,使用组件创建您自己的视图并将其设置为 alertview 的附件视图:

[alert setValue:imageView forKey:@"accessoryView"]; 

这很简单:-)

于 2009-07-23T06:21:33.703 回答
6

本教程介绍如何继承 UIAlertView 以实现输入文本框。它解释了如何放大视图、添加子视图(如文本框或图像)并进行转换以将框在屏幕上向上移动。

于 2009-08-23T15:53:13.517 回答
6

我写了一个几乎像素完美的 UIAlertView 替代品,它也是完全可配置的。如果它符合您的需求,请查看CODialog 。

于 2012-04-13T11:43:02.050 回答
4

没有用于此的内置组件。UIAlertView 应该只有 HIG 文档中的文本和按钮。

您必须创建自己的视图并向其添加控件。SDK 中的 HeadsUpUI 示例展示了如何将自定义的类似菜单的视图显示为叠加层。

希望有帮助。

于 2009-02-16T18:20:58.833 回答