2012-01-17 83 views

回答

3

UIAlertView中的输入字段由iOS SDK 5及更高版本本机支持。如果您需要支持第4版,则需要一些黑客行为。

我曾经为Montouch做过一些示例代码。不是很干净,但它应该给你的想法:

http://wildsau.net/post/2011/01/28/iOS-UIAlertView-with-a-UITextField-a-MonoTouch-implementation.aspx

而且,是的,这将是苹果没有问题的批准。

+0

谢谢。你不需要使用IOS 5和更高版本来完成吗? – mortenstarck 2012-01-18 12:19:01

+0

正如其他答案所说:在iOS5中,您有各种选项可以显示输入字段。 – Krumelur 2012-01-18 14:38:12

2

从iOS5开始,您可以将文本字段添加到UIAlertViews,包括安全密码字段。这里是一个教程链接:

http://mobile.tutsplus.com/tutorials/iphone/ios-5-sdk-uialertview-text-input-and-validation/

+0

Dude这是iOS的一个很好的教程,但它与monotouch morten正在寻找无关! – 2012-01-18 06:18:19

+1

想要进入iOS开发的每个人都应该至少能够阅读和理解ObjC,并且能够将其翻译成MT。 ObjC是iOS的标准,所以我认为即使你去参加MT也没有办法。 – Krumelur 2012-01-18 11:06:26

+0

但Monotouch的孔点不是我不必担心Obejct-C? – mortenstarck 2012-01-18 15:42:12

2

的iOS 5.0中引入的UIAlertViewStyle。有4种可供选择,我们一直有的默认选项,以及另外3种包括UITextField s。

如果你想支持5.0之前的iOS版本,你可以自己定制这些alertViews(我在刚刚发布的应用程序中这样做了)。您可以通过这种方式添加UITextField s和UILabel

我实现了alertView这样的:

UIAlertView *changeEmailAlert = [[UIAlertView alloc] initWithTitle:@"Change Email Address" message:@"\n\n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 

消息(\ n \ n)具有换行符作出足够的空间,以适应我的UILabelUITextField的大小。

然后,只需添加UILabelUITextField作为UIAlertView的子视图,就像您在其他地方添加子视图一样。

这是重要的部分:您需要在解除alertView之前将文本保存在UITextField中。我使用-(void)textFieldDidEndEditing:(UITextField *)textField来获取输入的文本并将其保存在稍后可访问的变量中。

1

如果您需要一个不支持iOS5的解决方案,UIAlertViews就像其他任何东西一样。您可以对它们进行子类化,添加其他属性和子视图。

没有什么从创建具有文本框属性,实现了文本字段的委托协议,当你实例化它增加了文本框,以它自己的视图层次结构中的UIAlertView中子阻止你。

让它看起来不错可能会更棘手,并且执行诸如移动其他子视图来为文本字段腾出空间可能会涉及一些脆弱的黑客攻击,例如在警报视图内循环访问未命名的子视图并通过索引抓取一个子视图。但这是在iOS4和更早版本上完成此操作的唯一方法,并且很多应用程序都采用了这种方法。