Just My Life & My Work

[iOS] 客製化AlertView

原本預設的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就去處理相對應的行為。

custom alertview

參考:Username and Password UITextFields in UIAlertView prompt【iPhone開發】如何做一個Username/Password彈跳視窗(UIAlertView)?

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲