是否有一种简单的方法可以将文本字段添加到UIAlertView并从中获取文本?
答案 0 :(得分:3)
iOS SDK 5及更高版本本身支持UIAlertView
中的输入字段。如果您需要支持版本4,则需要一些黑客攻击。
我曾为Montouch制作了一些示例代码。不是很干净但它应该给你的想法:
而且,是的,这将得到Apple的批准而没有问题。
答案 1 :(得分:2)
从iOS5开始,您可以向UIAlertView添加文本字段,包括安全密码字段。这是一个教程链接:
http://mobile.tutsplus.com/tutorials/iphone/ios-5-sdk-uialertview-text-input-and-validation/
答案 2 :(得分:2)
iOS 5.0引入了UIAlertViewStyle
。有4个可供选择,我们一直有的默认选项,以及包含UITextField
s的其他3个。
如果您想支持5.0之前的iOS版本,您可以自己自定义这些alertViews(我在刚刚发布的应用程序中这样做了)。您可以通过这种方式添加/ UITextField
和UILabel
。
我实现了alertView,如下所示:
UIAlertView *changeEmailAlert = [[UIAlertView alloc] initWithTitle:@"Change Email Address" message:@"\n\n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
消息(\ n \ n)有换行符,足以容纳UILabel
和UITextField
的大小。
然后,只需添加UILabel
和UITextField
作为UIAlertView
的子视图,就像在其他地方添加子视图一样。
以下是重要部分:您需要在解除alertView之前将文本保存在UITextField
中。我使用-(void)textFieldDidEndEditing:(UITextField *)textField
获取输入的文本并将其保存在稍后可以访问的变量中。
答案 3 :(得分:1)
如果您需要非iOS5解决方案,UIAlertViews就像其他任何视图一样。您可以对它们进行子类化,添加其他属性和子视图。
没有什么可以阻止您创建具有textfield属性的UIAlertView子类,实现textfield委托协议并在实例化时将文本字段添加到其自己的视图层次结构中。
让它看起来不错可能会比较棘手,并且像移动其他子视图以为文本字段腾出空间这样的事情可能会涉及一些脆弱的黑客攻击,例如在警报视图中循环未命名的子视图并通过索引获取一个。但这是在iOS4及更早版本上实现这一目标的唯一方法,而且很多应用都采用了这种方法。