原本預設的AlertView只能顯示訊息,而無法輸入資料,看了人家寫的程式碼之後,才發現客製化AlertView可以很巧妙地產生TextField,想要幾行輸入框都不是問題了呢!在按下確定後,這些資料可以再做額外的處理~
-(IBAction)newWorkButtonClicked:(UIButton *)button
{
UITextField *nameTextField;
UITextField *passwordTextField;
UIAlertView *prompt = [[UIAlertView alloc] initWithTitle:@"請輸入作品名稱"
message:@"\n\n\n" // 關鍵步驟
delegate:nil
cancelButtonTitle:@"取消"
otherButtonTitles:@"確定", nil];
[prompt setDelegate:self];
nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(24.0, 50.0, 236.0, 30.0)];
[nameTextField setBackgroundColor:[UIColor whiteColor]];
[nameTextField setPlaceholder:@"美好的回憶"];
[nameTextField setBorderStyle:UITextBorderStyleRoundedRect];
[prompt addSubview:nameTextField];
passwordTextField = [[UITextField alloc] initWithFrame:CGRectMake(24.0, 85.0, 236.0, 30.0)];
[passwordTextField setBackgroundColor:[UIColor whiteColor]];
[passwordTextField setPlaceholder:@"1314520"];
[passwordTextField setBorderStyle:UITextBorderStyleBezel];
[passwordTextField setSecureTextEntry:YES];
[prompt addSubview:passwordTextField];
// 設定AlertView位置
[prompt setTransform:CGAffineTransformMakeTranslation(0.0, 10.0)];
[prompt show];
// 設定TextField出現游標和鍵盤
[nameTextField becomeFirstResponder];
}
#pragma mark - AlertView Delegate Methods
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"Index: %i", buttonIndex);
}
關鍵就是在init AlertView的時候,message設定「斷行(\n)」,想要幾行TextField就輸入幾個。
接下來就是在AlertView內產生TextField,位置、大小還有各種屬性參數的設定好,最後AlertView Delegate就去處理相對應的行為。
參考:Username and Password UITextFields in UIAlertView prompt、【iPhone開發】如何做一個Username/Password彈跳視窗(UIAlertView)?。

隨意留個言吧:)~