电竞比分网-中国电竞赛事及体育赛事平台

分享

UITextField詳解

 昵稱2735774 2014-08-31

本文自己總結(jié)和整理了其他的文章



  • text屬性:plain常規(guī)的。attributed屬性可以更改一個label文字,中不同的顏色。
  • color:改變字體顏色;
  • font:改變文字字體和文字大小;
  • alignment:文字對齊方式;
  • Placeholder:在輸入框沒有文字的時候的灰色提示性文字。當這個文本框中輸入了數(shù)據(jù)時,用于提示的灰色的字將會自動消失;
  • Background:設(shè)置背景圖片,Border Style選擇最后一個的時候沒有效果
  • Disabled : 禁用時候的圖片
  • Border Style : 選擇邊界風格。
  • Clear Button : 這是一個下拉菜單,你可以選擇清除按鈕什么時候出現(xiàn),所謂清除按鈕就是出一個現(xiàn)在文本框右邊的小 X ,你可以有以下選擇:

    Never appears : 從不出現(xiàn)
    Appears while editing : 編輯時出現(xiàn)
    Appears unless editing : 不在編輯時出現(xiàn)(一般不咋用)

    Is always visible : 總是可見


  • Clear when editing begins : 若選中此項,則當開始編輯這個文本框時,文本框中之前的內(nèi)容會被清除掉。
  • Min Font Size : 設(shè)置文本框可以顯示的最小字體
  • Adjust To Fit : 指定當文本框尺寸減小時,文本框中的文本是否也要縮小。選擇它,可以使得全部文本都可見,即使文本很長。但是這個選項要跟 Min Font Size 配合使用,文本再縮小,也不會小于設(shè)定的 Min Font Size 。
  • 下面設(shè)置鍵盤的類型和顯示方式。
  • Captitalization : 設(shè)置大寫。下拉菜單中有四個選項:

    None:不設(shè)置大寫
    Words:每個單詞首字母大寫,這里的單詞指的是以空格分開的字符串

    Sentances:每個句子的第一個字母大寫,這里的句子是以句號加空格分開的字符串

    All Characters: 所以字母大寫
  • Correction : 檢查拼寫,默認是 YES 
  • Keyboard : 選擇鍵盤類型,比如全數(shù)字、字母和數(shù)字和適合輸入Emil等。
  • Appearance:兩種鍵盤風格。Dark是暗色系的,黑色的鍵盤。Light是亮色的系的,白色鍵盤。
  • Return Key : 選擇返回鍵類型,可以選擇 Search 、 Return 、 Done 等。
  • Secure : 當你的文本框用作密碼輸入框時,可以選擇這個選項,此時,字符顯示為星號。
  • Alignment Horizontal :水平對齊方式
  • Alignment Vertical :垂直對齊方式
  • Content:用于返回一個BOOL值  輸入框是否 Selected(選中) Enabled(可用) Highlighted(高亮)。
  • View:這是摁鈕下面的一個自帶的view的屬性。設(shè)置這個同時也就設(shè)置了這個Button。如設(shè)置了這個Alpha或者Hidden,或者設(shè)這tag也就是設(shè)置這個Button。

代碼實現(xiàn):

1.建立初始化一個textfield

  1. UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 100, 100)];   

2.設(shè)置邊框樣式

  1. text.borderStyle = UITextBorderStyleRoundedRect; // 不設(shè)置顯示默認的  

  1. typedef enum {  
  2.     UITextBorderStyleNone,   
  3.     UITextBorderStyleLine,  
  4.     UITextBorderStyleBezel,  
  5.     UITextBorderStyleRoundedRect    
  6. } UITextBorderStyle;  

2.設(shè)置輸入框背景顏色

  1. text.backgroundColor = [UIColor whiteColor];  // 如果設(shè)置為白色,設(shè)置的背景圖片會被邊框忽略掉  

3.設(shè)置提示性文字

  1. text.placeholder = @"password"; <span style="white-space:pre">  </span>// 當輸入框沒有內(nèi)容時提示為password,一旦輸入內(nèi)容了,這個提示會被清空,內(nèi)容為空時,又會顯示  

4.設(shè)置輸入框一開始的文字

  1. text.text = @"1234567890";    

5.設(shè)置輸入框內(nèi)容的字體和大小

  1. text.font = [UIFont fontWithName:@"Arial" size:20.0f];    

6.設(shè)置字體顏色

  1. text.textColor = [UIColor redColor];    

7.設(shè)置輸入框右側(cè)一次性清除小叉的摁鈕

  1. text.clearButtonMode = UITextFieldViewModeAlways;   

  1. typedef enum {  
  2.     UITextFieldViewModeNever,  從不出現(xiàn)  
  3.     UITextFieldViewModeWhileEditing, 編輯時出現(xiàn)  
  4.     UITextFieldViewModeUnlessEditing,  除了編輯外都出現(xiàn)  
  5.     UITextFieldViewModeAlways   一直出現(xiàn)  
  6. } UITextFieldViewMode;  

8.設(shè)置密碼保護,每一個字符都變成星號

  1. text.secureTextEntry = YES;   

9.設(shè)置是否自動糾錯

  1. text.autocorrectionType = UITextAutocorrectionTypeNo;    

  1. typedef enum {  
  2.     UITextAutocorrectionTypeDefault, 默認  
  3.     UITextAutocorrectionTypeNo,   不自動糾錯  
  4.     UITextAutocorrectionTypeYes,  自動糾錯  
  5. } UITextAutocorrectionType;  

10.設(shè)置再次編輯時輸入框為空

  1. text.clearsOnBeginEditing = YES;  

11.設(shè)置內(nèi)容對齊方式

  1. text.textAlignment = NSTextAlignmentLeft;  // 左對齊  


12.設(shè)置內(nèi)容的垂直對齊方式


  1. text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;  


13.設(shè)置內(nèi)容自適應(yīng)輸入框大小

  1. text.adjustsFontSizeToFitWidth = YES;  

14.設(shè)置自適應(yīng)大小后的最小字體

  1. text.minimumFontSize = 20;   


15.設(shè)置鍵盤樣式

  1. text.keyboardType = UIKeyboardTypeNumberPad;   

  1. typedef enum {  
  2.     UIKeyboardTypeDefault,       默認鍵盤,支持所有字符           
  3.     UIKeyboardTypeASCIICapable,  支持ASCII的默認鍵盤  
  4.     UIKeyboardTypeNumbersAndPunctuation,  標準電話鍵盤,支持+*#字符  
  5.     UIKeyboardTypeURL,            URL鍵盤,支持.com按鈕 只支持URL字符  
  6. UIKeyboardTypeNumberPad,              數(shù)字鍵盤  
  7. UIKeyboardTypePhonePad,    電話鍵盤  
  8.     UIKeyboardTypeNamePhonePad,   電話鍵盤,也支持輸入人名  
  9. UIKeyboardTypeEmailAddress,   用于輸入電子 郵件地址的鍵盤       
  10. UIKeyboardTypeDecimalPad,     數(shù)字鍵盤 有數(shù)字和小數(shù)點  
  11.     UIKeyboardTypeTwitter,        優(yōu)化的鍵盤,方便輸入@、#字符  
  12.     UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,   
  13. } UIKeyboardType;  

16.設(shè)置首字母是否大寫

  1. text.autocapitalizationType = UITextAutocapitalizationTypeNone;   
  2.   
  3. typedef enum {  
  4.     UITextAutocapitalizationTypeNone, 不自動大寫  
  5.     UITextAutocapitalizationTypeWords,  單詞首字母大寫  
  6.     UITextAutocapitalizationTypeSentences,  句子的首字母大寫  
  7.     UITextAutocapitalizationTypeAllCharacters, 所有字母都大寫  
  8. } UITextAutocapitalizationType;  


17.設(shè)置return鍵樣式

  1. text.returnKeyType =UIReturnKeyDone;   

  1. typedef enum {  
  2.     UIReturnKeyDefault, 默認 灰色按鈕,標有Return  
  3.     UIReturnKeyGo,      標有Go的藍色按鈕  
  4.     UIReturnKeyGoogle, 標有Google的藍色按鈕,用語搜索  
  5.     UIReturnKeyJoin, 標有Join的藍色按鈕  
  6.     UIReturnKeyNext, 標有Next的藍色按鈕  
  7.     UIReturnKeyRoute, 標有Route的藍色按鈕  
  8.     UIReturnKeySearch, 標有Search的藍色按鈕  
  9.     UIReturnKeySend, 標有Send的藍色按鈕  
  10.     UIReturnKeyYahoo, 標有Yahoo的藍色按鈕  
  11.     UIReturnKeyYahoo, 標有Yahoo的藍色按鈕  
  12.     UIReturnKeyEmergencyCall, 緊急呼叫按鈕  
  13. } UIReturnKeyType;  


18.設(shè)置鍵盤外觀

  1. textView.keyboardAppearance=UIKeyboardAppearanceDefault;  

  1. typedef enum {  
  2. UIKeyboardAppearanceDefault, 默認外觀,淺灰色  
  3. UIKeyboardAppearanceAlert,     深灰 石墨色  
  4. } UIReturnKeyType;  


19.設(shè)置代理

  1. text.delegate = self;   


20.把創(chuàng)建好的輸入框添加到視圖中

  1. [self.view addSubview:text];   


21.設(shè)置輸入框最右側(cè)圖片(左側(cè)類似)

  1. UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];   
  2. text.rightView=image;  
  3. text.rightViewMode = UITextFieldViewModeAlways;   

  1. ypedef enum {  
  2.     UITextFieldViewModeNever,  
  3.     UITextFieldViewModeWhileEditing,  
  4.     UITextFieldViewModeUnlessEditing,  
  5.     UITextFieldViewModeAlways  
  6. } UITextFieldViewMode;  


委托方法

1.點擊return鍵盤消失

  1. - (IBAction)CPasswordField_TouchDone:(id)sender {  
  2.     [sender resignFirstResponder];  
  3. }  


2.點擊return其他輸入框轉(zhuǎn)為焦點鍵盤切換為新的輸入框服務(wù)(一般用于好多個輸入框,輸入完上一個點擊下一個,的時候可以直接輸入下一個)

  1. - (IBAction)PasswordField_TouchNext:(id)sender {  
  2.     [self.CPasswordField becomeFirstResponder];  
  3. }  


3.點擊return直接觸發(fā)其他摁鈕等控件(一般用于登陸或者注冊的時候最后一個輸入框輸入完之后點擊鍵盤上的類似GO摁鈕,直接觸發(fā)下面的登陸摁鈕或者注冊摁鈕)

  1. - (IBAction)PasswordFieldDidGO:(id)sender {  
  2.    [sender resignFirstResponder];  
  3.    [self.LoginButton sendActionsForControlEvents:UIControlEventTouchUpInside];  
  4.       
  5. }  

文本框從開始編輯到結(jié)束的觸發(fā)的幾個狀態(tài)委托

  1. - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{   
  2.    
  3. //返回一個BOOL值,指定是否循序文本字段開始編輯   
  4.   
  5.     return YES;    
  6. }    
  7. - (void)textFieldDidBeginEditing:(UITextField *)textField{    
  8.   
  9. //開始編輯時觸發(fā),文本字段將成為first responder    
  10.   
  11. }    
  12. - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{    
  13.   
  14. //返回BOOL值,指定是否允許文本字段結(jié)束編輯,當編輯結(jié)束,文本字段會讓出first responder    
  15.    //要想在用戶結(jié)束編輯時阻止文本字段消失,可以返回NO       
  16. //這對一些文本字段必須始終保持活躍狀態(tài)的程序很有用,比如即時消息  
  17.    
  18.    
  19.     return NO;    
  20. }    
  21. - (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    
  22.   
  23. //當用戶使用自動更正功能,把輸入的文字修改為推薦的文字時,就會調(diào)用這個方法。    
  24. //這對于想要加入撤銷選項的應(yīng)用程序特別有用    
  25. //可以跟蹤字段內(nèi)所做的最后一次修改,也可以對所有編輯做日志記錄,用作審計用途。       
  26. //要防止文字被改變可以返回NO    
  27. //這個方法的參數(shù)中有一個NSRange對象,指明了被改變文字的位置,建議修改的文本也在其中    
  28.   
  29.      return YES;    
  30. }    
  31. - (BOOL)textFieldShouldClear:(UITextField *)textField{    
  32.   
  33. //返回一個BOOL值指明是否允許根據(jù)用戶請求清除內(nèi)容    
  34. //可以設(shè)置在特定條件下才允許清除內(nèi)容   
  35.   
  36.      return YES;    
  37. }    
  38. -(BOOL)textFieldShouldReturn:(UITextField *)textField{    
  39.   
  40. //返回一個BOOL值,指明是否允許在按下回車鍵時結(jié)束編輯    
  41.   //如果允許要調(diào)用resignFirstResponder 方法,這回導(dǎo)致結(jié)束編輯,而鍵盤會被收起[textField resignFirstResponder];  
  42. //查一下resign這個單詞的意思就明白這個方法了   
  43.   
  44.      return YES;    
  45. }    


通知
UITextFieldTextDidChangeNotification
UITextFieldTextDidEndEditingNotification
UIKeyboardWillShowNotification   //鍵盤顯示之前發(fā)送
UIKeyboardDidShowNotification    //鍵盤顯示之后發(fā)送
UIKeyboardWillHideNotification   //鍵盤隱藏之前發(fā)送

UITextFieldTextDidBeginEditingNotification

當文本字段退出編輯模式時觸發(fā)。通知的object屬性存儲了最終文本。

因為文本字段要使用鍵盤輸入文字,所以下面這些事件發(fā)生時,也會發(fā)送動作通知

UIKeyboardDidHideNotification    //鍵盤隱藏之后發(fā)送


限制輸入長度

  1. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;  
  2. {  //string就是此時輸入的那個字符 textField就是此時正在輸入的那個輸入框 返回YES就是可以改變輸入框的值 NO相反  
  3.     if ([string isEqualToString:@"\n"]) //按會車可以改變  
  4.     {  
  5.         return YES;  
  6.     }  
  7.     NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];//得到輸入框的內(nèi)容  
  8.     if (self.UserNameField == textField || self.PasswordField == textField)  //判斷是否時我們想要限定的那個輸入框  
  9.     {  
  10.         if ([toBeString length] > 20) { //如果輸入框內(nèi)容大于20則彈出警告  
  11.             textField.text = [toBeString substringToIndex:20];  
  12.             return NO;  
  13.         }  
  14.     }  
  15.     return YES;  
  16. }  
  17.   
  18. 限制只能輸入特定的字符  
  19. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{  
  20.   
  21.     NSCharacterSet *cs;  
  22.   
  23.     cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];  
  24.   
  25.     NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];//按cs分離出數(shù)組,數(shù)組按@""分離出字符串  
  26.   
  27.     BOOL canChange = [string isEqualToString:filtered];  
  28.   
  29.     return canChange;  
  30. }  




#define NUMBERS @”0123456789\n” (這個代表可以輸入數(shù)字和換行,請注意這個\n,如果不寫這個,Done按鍵將不會觸發(fā),如果用在SearchBar中,將會不觸發(fā)Search事件,因為你自己限制不讓輸入\n,好慘,我在項目中才發(fā)現(xiàn)的。)
所以,如果你要限制輸入英文和數(shù)字的話,就可以把這個定義為:

#define kAlphaNum   @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。
當然,你還可以在以上方法return之前,做一提示的,比如提示用戶只能輸入數(shù)字之類的。如果你覺得有需要的話。

這種辦法也可以用正則表達式去實現(xiàn),后續(xù)還有一個正則的使用方法文章

  1. <pre code_snippet_id="149696" snippet_file_name="blog_20140109_15_1532776"></pre>  
  2. <pre></pre>  
  3. <pre></pre>  
  4. <pre></pre>  

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多