1. 程式人生 > >iOS開發小記:帶輸入框(TextField)的UIAlertView

iOS開發小記:帶輸入框(TextField)的UIAlertView

光寫這篇文章的標題我就至少三次把Ctrl鍵按錯成Alt(或Win)鍵,因為剛從Mac下來,惱火。。。

昨天寫專案的時候有個地方需要用到UIAlertView(警告)上有一個輸入框(UITextField),第一反應就是去Code4App上翻,還好翻到兩個用得上的Demo,但是下下來很多錯誤,包括沒有ARC什麼的,一大堆警告。

於是就想著自己簡單定製一個AlertView上新增UITextField,由於專案很簡單,就沒做很複雜,直接在alertView上addSubview個輸入框,然後點選按鈕的時候再獲取出來這個輸入框的值就ok了。是不是很簡單呢?

下面是最初的想法,實現的程式碼:

    //自己定義一個UITextField新增上去,後來發現ios5自帶了此功能
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"類別修改" message:@" " delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"修改",nil];
    UITextField * txt = [[UITextField alloc] init];
    txt.backgroundColor = [UIColor whiteColor];
    txt.frame = CGRectMake(alert.center.x+65,alert.center.y+48, 150,23);
    [alert addSubview:txt];
    [alert show];

這張圖就是上述程式碼的效果,可以看到這個輸入框不是很美觀,稜角很明顯,沒圓角,沒陰影,控制也不是很方便。

簡單自定義的AlertView

這樣其實是一個很笨的方法,沒有封裝起來一個獨立的AlertView,只想投簡單搞定一個類似這樣功能的東西,不過還是有用的,記錄下來以後方便改造。

後來發現經高人指點,ios5已經自帶了上述功能,甚至更豐富,那就是 Alert 的 alertViewStyle 屬性。

alertViewStyle 屬性有以下三種選項:

UIAlertViewStylePlainTextInput - 新增一個普通輸入框
UIAlertViewStyleSecureTextInput - 密碼輸入框
UIAlertViewStyleLoginAndPasswordInput - 普通輸入框加密碼輸入框

下面分別來看看這三種屬性的效果:

UIAlertViewStylePlainTextInput

(UIAlertViewStylePlainTextInput)

UIAlertViewStyleSecureTextInput

(UIAlertViewStyleSecureTextInput)

UIAlertViewStyleLoginAndPasswordInput

(UIAlertViewStyleLoginAndPasswordInput)

可以看到自帶的文字+密碼輸入框彈出的鍵盤有點點不一樣,稍帶透明。

初始化AlertView後,通過設定這個屬性,達到AlertView上出現輸入框的效果,然後再新增UIAlertViewDelegate代理,在下面棉紡就可以獲取到這個文字框。

-(void)alertView : (UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex  
{  
       //得到輸入框
       UITextField *tf=[alertView textFieldAtIndex:0];
}

是不是很簡單呢,看來Xcode是越來越讓開發者省心,這也是它不斷更新帶來的好處,這個只是最基本的實現方法,如果想達到一些額外的效果或者想要的功能,比如在Alert上新增一個UIImageView什麼的,那就要自己動手豐衣足食了。。。