2013-09-30 68 views
3

我需要在iOS 7的UIAlertView上添加多個UITextField?如何將多個UITextFields添加到iOS 7中的UIAlertView?

myAlertView = [[UIAlertView alloc] initWithTitle:@"Enter Your Detail" message:@"\n\n\n\n\n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Register",nil]; 
txtEmail = [[UITextField alloc] initWithFrame:CGRectMake(30, 40, 220, 25)]; 
txtEmail.placeholder = @"email address"; 
txtFirstName = [[UITextField alloc] initWithFrame:CGRectMake(30, 70, 220, 25)]; 
txtFirstName.placeholder = @"first Name"; 
txtSurname = [[UITextField alloc] initWithFrame:CGRectMake(30, 100, 220, 25)]; 
txtSurname.placeholder = @"surname"; 
[myAlertView addSubview:txtEmail]; 
[myAlertView addSubview:txtFirstName]; 
[myAlertView addSubview:txtSurname]; 

[myAlertView show]; 

在iOS 6中沒有問題,但在IOS 7中沒有顯示的UITextField

+0

只是作爲魅力http://stackoverflow.com/a/25175989/2459296 – Salim

回答

7

你不能這樣做任何更多的,有沒有addSubviewUIAlertView更多在iOS7中。

下面是很好的選擇:

ios-custom-alertview

你的情況MZFormSheetController

+0

你能告訴我我怎麼解決它? – Luna

+0

不幸的是,你需要使用替代檢查我的問題中的網址,這是唯一的方法。 – null

0

在Ios7,您需要設置,

myAlertView.alertViewStyle = UIAlertViewStylePlainTextInput; 
+0

謝謝,我試試這個,但它只是顯示文本域默認 – Luna

2

一種替代方法是設置 alert.alertViewStyle = UIAlertViewStylePlainTextInput;

這將添加一個文本字段,你。您可以通過使用UITextField *textField = [alertView textFieldAtIndex:0];在UIAlertView代理回調中訪問它。

+0

謝謝,我試過了 – Luna

0

在iOS7中,您不能在UIAlertView上使用addSubview。 這就是爲什麼它不起作用,作爲替代方案,您可以使用自定義視圖來執行此操作。 創建自定義視圖併爲其添加文本框併爲其添加動畫。

您可以在此鏈接上找到定製alertview的:Cocoa Controls

0

試試這個,

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Forgot Password" message:@"Please enter the email ID associated with your Hngre account." delegate:self cancelButtonTitle:@"Here you go" otherButtonTitles:@"No, thanks", nil]; 
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput; 
[alert textFieldAtIndex:1].secureTextEntry = NO; //Will disable secure text entry for second textfield. 
[alert textFieldAtIndex:0].placeholder = @"First Placeholder"; //Will replace "Username" 
[alert textFieldAtIndex:1].placeholder = @"Second Placeholder"; //Will replace "Password" 
[alert show];