基本控件文檔-UITextField屬性---iOS-Apple蘋果官方文檔翻譯

本系列全部開發文檔翻譯連接地址:iOS7開發-Apple蘋果iPhone開發Xcode官方文檔翻譯PDF下載地址html

//轉載請註明出處--本文永久連接:http://www.cnblogs.com/ChenYilong/p/3495980.htmlios

 

 

本文對應pdf文檔下載連接,猛戳—>:UITextField屬性---iOS-Apple蘋果官方...
322.4 KB
web

 

 

UITextField屬性
技術博客http://www.cnblogs.com/ChenYilong/   新浪微博http://weibo.com/luohanchenyilong  
enablesReturnKeyAutomatically
默認爲No,若是設置爲Yes,文本框中沒有輸入任何字符的話,右下角的返回按鈕是disabled的。
1.borderStyle
設置邊框樣式,只有設置了纔會顯示邊框樣式 
  text.borderStyle = UITextBorderStyleRoundedRect;
 typedef enum {
    UITextBorderStyleNone, 
    UITextBorderStyleLine,
    UITextBorderStyleBezel,
    UITextBorderStyleRoundedRect  
  } UITextBorderStyle;                                                      

2.backgroundColor 
設置輸入框的背景顏色,此時設置爲白色 若是使用了自定義的背景圖片邊框會被忽略掉 
  text.backgroundColor = [UIColor whiteColor];
3.background
設置背景
  text.background = [UIImage imageNamed:@"dd.png"];//UITextField
 的背景,注意只有UITextBorderStyleNone的時候改屬性有效
 
設置enableno時,textfield的背景 
  text.disabledBackground = [UIImage imageNamed:@"cc.png"];

4.placeholder
當輸入框沒有內容時, 提示內容爲password
  text.placeholder = @"password";
5.font
設置輸入框內容的字體樣式和大小
  text.font = [UIFont fontWithName:@"Arial" size:20.0f];
6. textColor
設置字體顏色
  text.textColor = [UIColor redColor];
7. clearButtonMode
輸入框中是否有個叉號,在何時顯示,用於一次性刪除輸入框中的內容
  text.clearButtonMode = UITextFieldViewModeAlways; 
typedef enum {
    UITextFieldViewModeNever,
 重不出現
    UITextFieldViewModeWhileEditing, 
編輯時出現
    UITextFieldViewModeUnlessEditing,
 除了編輯外都出現
    UITextFieldViewModeAlways
  一直出現
} UITextFieldViewMode;
 
技術博客http://www.cnblogs.com/ChenYilong/   新浪微博http://weibo.com/luohanchenyilong  
8. text
輸入框中一開始就有的文字
  text.text = @"
一開始就在輸入框的文字";
9. secureTextEntry
每輸入一個字符就變成點 用來輸入密碼時,設置這個屬性。
  text.secureTextEntry = YES;
10. autocorrectionType
是否糾錯
  text.autocorrectionType = UITextAutocorrectionTypeNo;
typedef enum {
    UITextAutocorrectionTypeDefault, 
默認
    UITextAutocorrectionTypeNo,
  不自動糾錯
    UITextAutocorrectionTypeYes,
 自動糾錯
} UITextAutocorrectionType;
 
11. clearsOnBeginEditing
再次編輯就清空
  text.clearsOnBeginEditing = YES; 
12. textAlignment
內容對齊方式
  text.textAlignment = UITextAlignmentLeft;
13. contentVerticalAlignment
內容的垂直對齊方式  UITextField繼承自UIControl,此類中有一個屬性contentVerticalAlignment
  text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
14. adjustsFontSizeToFitWidth
設置爲YES時文本會自動縮小以適應文本窗口大小.默認是保持原來大小,而讓長文本滾動 
  textFied.adjustsFontSizeToFitWidth = YES;
//
設置自動縮小顯示的最小字體大小
  text.minimumFontSize = 20;

15. keyboardType
設置鍵盤的樣式
  text.keyboardType = UIKeyboardTypeNumberPad;
typedef enum {
    UIKeyboardTypeDefault,    
  默認鍵盤,支持全部字符         
    UIKeyboardTypeASCIICapable,
 支持ASCII的默認鍵盤
    UIKeyboardTypeNumbersAndPunctuation,
 標準電話鍵盤,支持+*#字符
    UIKeyboardTypeURL,            URL
鍵盤,支持.com按鈕 只支持URL字符
UIKeyboardTypeNumberPad,           
  數字鍵盤
UIKeyboardTypePhonePad,
   電話鍵盤
    UIKeyboardTypeNamePhonePad,
  電話鍵盤,也支持輸入人名
UIKeyboardTypeEmailAddress,
  用於輸入電子 郵件地址的鍵盤     
UIKeyboardTypeDecimalPad,  
  數字鍵盤 有數字和小數點
    UIKeyboardTypeTwitter,     
  優化的鍵盤,方便輸入@#字符
    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, 
} UIKeyboardType;
16.autocapitalizationType
首字母是否大寫
  text.autocapitalizationType = UITextAutocapitalizationTypeNone;
typedef enum {
    UITextAutocapitalizationTypeNone, 
不自動大寫
    UITextAutocapitalizationTypeWords,
 單詞首字母大寫
    UITextAutocapitalizationTypeSentences,
 句子的首字母大寫
    UITextAutocapitalizationTypeAllCharacters, 
全部字母都大寫
} UITextAutocapitalizationType;
17. returnKeyType
return鍵變成什麼鍵
 text.returnKeyType =UIReturnKeyDone;
typedef enum {
    UIReturnKeyDefault, 
默認 灰色按鈕,標有Return
    UIReturnKeyGo,   
  標有Go的藍色按鈕
    UIReturnKeyGoogle,
標有Google的藍色按鈕,用語搜索
    UIReturnKeyJoin,
標有Join的藍色按鈕
    UIReturnKeyNext,
標有Next的藍色按鈕
    UIReturnKeyRoute,
標有Route的藍色按鈕
    UIReturnKeySearch,
標有Search的藍色按鈕
    UIReturnKeySend,
標有Send的藍色按鈕
    UIReturnKeyYahoo,
標有Yahoo的藍色按鈕
    UIReturnKeyYahoo,
標有Yahoo的藍色按鈕
    UIReturnKeyEmergencyCall, 
緊急呼叫按鈕
} UIReturnKeyType;
18. keyboardAppearance
鍵盤外觀
textView.keyboardAppearance=UIKeyboardAppearanceDefault

typedef enum {
UIKeyboardAppearanceDefault
 默認外觀,淺灰色
UIKeyboardAppearanceAlert
,   深灰 石墨色
} UIReturnKeyType;
 
 19. delegate
設置代理 用於實現協議
  text.delegate = self;
objective-c

//轉載請註明出處--本文永久連接:http://www.cnblogs.com/ChenYilong/p/3495980.htmlapi


20.  rightView
最右側加圖片是如下代碼  左側相似
    UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
    text.rightView=image;
    text.rightViewMode = UITextFieldViewModeAlways; 
typedef enum {
    UITextFieldViewModeNever,
    UITextFieldViewModeWhileEditing,
    UITextFieldViewModeUnlessEditing,
    UITextFieldViewModeAlways
} UITextFieldViewMode;

21.
 editing
是否容許編輯。
技術博客http://www.cnblogs.com/ChenYilong/   新浪微博http://weibo.com/luohanchenyilong  
22.界面重寫繪製行爲
除了UITextField對象的風格選項,你還能夠定製化UITextField對象,爲他添加許多不一樣的重寫方法,來改變文本字段的顯示行爲。這些方法都會返回一個CGRect結構,制定了文本字段每一個部件的邊界範圍。如下方法均可以重寫。
 
– textRectForBounds:
     //重寫來重置文字區域
– drawTextInRect:
         //改變繪文字屬性.重寫時調用super能夠按默認圖形屬性繪製,若本身徹底重寫繪製函數,就不用調用super.
– placeholderRectForBounds:
  //重寫來重置佔位符區域
– drawPlaceholderInRect:
  //重寫改變繪製佔位符屬性.重寫時調用super能夠按默認圖形屬性繪製,若本身徹底重寫繪製函數,就不用調用super.
– borderRectForBounds:
  //重寫來重置邊緣區域
– editingRectForBounds:
  //重寫來重置編輯區域
– clearButtonRectForBounds:
  //重寫來重置clearButton位置,改變size可能致使button的圖片失真
– leftViewRectForBounds:
– rightViewRectForBounds:
 
22.調整鍵盤
inputView //代替標準的系統鍵盤
inputAccessoryView //
編輯時顯示在系統鍵盤或用戶自定義的inputView上面的視圖
 
23. delegate
類要遵照UITextFieldDelegate協議
 
text.delegate = self;
 聲明text的代理是我,我會去實現把鍵盤往下收的方法 這個方法在UITextFieldDelegate裏因此咱們要遵照UITextFieldDelegate這個協議
 
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [text resignFirstResponder];    //
主要是[receiver resignFirstResponder]在哪調用就能把receivertext)對應的鍵盤往下收
return YES;
}

代理方法 
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
 
  
//
返回一個BOOL值,YES表明容許編輯,NO不容許編輯. 
    return YES;
 
}
 
 
- (void)textFieldDidBeginEditing:(UITextField *)textField{
 
 //
開始編輯時觸發,文本字段將成爲first responder 
}
 
 
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
 
//
返回BOOL值,指定是否容許文本字段結束編輯,當編輯結束,文本字段會讓出first responder 
  //要想在用戶結束編輯時阻止文本字段消失,能夠返回NO ,返回NO,點擊鍵盤的返回按鈕會無效果。
  //這對一些文本字段必須始終保持活躍狀態的程序頗有用,好比即時消息 
  
    return NO;
 
}
 
- (void)textFieldDidEndEditing:(UITextField *)textField;{
 
}//
 上面返回YES後執行;上面返回NO時有可能強制執行(e.g. view removed from window)
 
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
 
//
當用戶使用自動更正功能,把輸入的文字修改成推薦的文字時,就會調用這個方法。 
//
這對於想要加入撤銷選項的應用程序特別有用 
//
能夠跟蹤字段內所作的最後一次修改,也能夠對全部編輯作日誌記錄,用做審計用途。   
//
要防止文字被改變能夠返回NO 
//
這個方法的參數中有一個NSRange對象,指明瞭被改變文字的位置,建議修改的文本也在其中 
 
    return YES; 
}
 
 
- (BOOL)textFieldShouldClear:(UITextField *)textField{
 
 
//
返回一個BOOL值指明是否容許根據用戶請求清除內容 
//
能夠設置在特定條件下才容許清除內容 
 
    return YES; 
}
 
 
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
 
 
app

//轉載請註明出處--本文永久連接:http://www.cnblogs.com/ChenYilong/p/3495980.htmlless


//
返回一個BOOL值,指明是否容許在按下回車鍵時結束編輯 
 //
若是容許要調用resignFirstResponder 方法,這回致使結束編輯,而鍵盤會被收起[textField resignFirstResponder];
//
查一下resign這個單詞的意思就明白這個方法了 
    return YES; 
}
 
 
 
 
24.通知
UITextField派生自UIControl,因此UIControl類中的通知系統在文本字段中也可使用。除了UIControl類的標準事件,你還可使用下列UITextField類特有的事件
 
UITextFieldTextDidBeginEditingNotification
UITextFieldTextDidChangeNotification
UITextFieldTextDidEndEditingNotification
當文本字段退出編輯模式時觸發。通知的object屬性存儲了最終文本。
 
由於文本字段要使用鍵盤輸入文字,因此下面這些事件發生時,也會發送動做通知
 
UIKeyboardWillShowNotification
  //鍵盤顯示以前發送
UIKeyboardDidShowNotification 
  //鍵盤顯示以後發送
UIKeyboardWillHideNotification
  //鍵盤隱藏以前發送
UIKeyboardDidHideNotification 
  //鍵盤隱藏以後發送
 
 
25.Stroyboard中:
1Text :設置文本框的默認文本。
2
Placeholder  能夠在文本框中顯示灰色的字,用於提示用戶應該在這個文本框輸入什麼內容。當這個文本框中輸入了數據時,用於提示的灰色的字將會自動消失。
3
Background 
4
Disabled  若選中此項,用戶將不能更改文本框內容。
5
、接下來是三個按鈕,用來設置對齊方式。
6
Border Style  選擇邊界風格。
7
Clear Button  這是一個下拉菜單,你能夠選擇清除按鈕何時出現,所謂清除按鈕就是出一個如今文本框右邊的小 X ,你能夠有如下選擇:
    7.1 Never appears 
 從不出現
    7.2 Appears while editing 
 編輯時出現
    7.3 Appears unless editing 
 
    7.4 Is always visible 
 老是可見
8
Clear when editing begins  若選中此項,則當開始編輯這個文本框時,文本框中以前的內容會被清除掉。好比,你如今這個文本框 A 中輸入了 "What" ,以後去編輯文本框 B,若再回來編輯文本框 A ,則其中的 "What" 會被當即清除。
9
Text Color  設置文本框中文本的顏色。
10
Font  設置文本的字體與字號。
11
Min Font Size  設置文本框能夠顯示的最小字體(不過我感受沒什麼用)
12
Adjust To Fit  指定當文本框尺寸減少時,文本框中的文本是否也要縮小。選擇它,可使得所有文本均可見,即便文本很長。可是這個選項要跟 Min Font Size 配合使用,文本再縮小,也不會小於設定的 Min Font Size 
接下來的部分用於設置鍵盤如何顯示。
13
Captitalization  設置大寫。下拉菜單中有四個選項:
    13.1 None 
 不設置大寫
    13.2 Words 
 每一個單詞首字母大寫,這裏的單詞指的是以空格分開的字符串
    13.3 Sentances 
 每一個句子的第一個字母大寫,這裏的句子是以句號加空格分開的字符串
    13.4 All Characters 
 因此字母大寫
14
Correction  檢查拼寫,默認是 YES 
15
Keyboard  選擇鍵盤類型,好比全數字、字母和數字等。
16
Appearance
17
Return Key  選擇返回鍵,能夠選擇 Search  Return  Done 等。
18
Auto-enable Return Key  如選擇此項,則只有至少在文本框輸入一個字符後鍵盤的返回鍵纔有效。
19
Secure  當你的文本框用做密碼輸入框時,能夠選擇這個選項,此時,字符顯示爲星號。
 
 
1.Alignment Horizontal 
水平對齊方式
2.Alignment Vertical 
垂直對齊方式
3.
用於返回一個BOOL值 輸入框是否 Selected(選中) Enabled(可用) Highlighted(高亮)
 
 
 
 
26.UITextField實例一 : UITextField限制字符 (只爲數字)
 
ios代碼  
#define ALPHA @
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz "  
#define NUMBERS @"0123456789n"  
#define ALPHANUM @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 "  
#define NUMBERSPERIOD @"0123456789."  
  
  
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  
{  
NSCharacterSet *cs;  
cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERSPERIOD ] invertedSet]; //invertedSet 方法是去反字符,把全部的除了數字的字符都找出來  
  
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];  //componentsSeparatedByCharactersInSet 方法是把輸入框輸入的字符string 根據cs中字符一個一個去除cs字符並分割成單字符並轉化爲 NSArray, 而後componentsJoinedByString 是把NSArray 的字符經過 ""無間隔鏈接成一個NSString字符 賦給filtered.就是隻剩數字了.  
  
  
BOOL basicTest = [string isEqualToString:filtered];  
 if(!basicTest)   
  
        {  
            UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"提示"  
                                                            message:@"請輸入數字"  
                                                           delegate:nil  
                                                  cancelButtonTitle:@"肯定"  
                                                  otherButtonTitles:nil];  
              
            [alert show];  
            [alert release];  
            return NO;  
        }      
  
// Add any predicate testing here  
return basicTest;  
}  
 
#define NUMBERS @」0123456789n」
 (這個表明能夠輸入數字和換行,請注意這個n,若是不寫這個,Done按鍵將不會觸發,若是用在SearchBar中,將會不觸發Search事件,由於你本身限制不讓輸入n,好慘,我在項目中才發現的。) 因此,若是你要限制輸入英文和數字的話,就能夠把這個定義爲: #define kAlphaNum @」ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″ 固然,你還能夠在以上方法return以前,作一提示的,好比提示用戶只能輸入數字之類的。若是你以爲有須要的話。
 
實例:限制只能輸入必定長度的字符
ios代碼  
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   

{ //string就是此時輸入的那個字符 textField就是此時正在輸入的那個輸入框 返回YES就是能夠改變輸入框的值 NO相反  
     
if ([string isEqualToString:@"n"]) //按回車能夠改變  
    {   
        return YES;   
    }   
   
    NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //獲得輸入框的內容  
   
    if (self.myTextField == textField) //判斷是否時咱們想要限定的那個輸入框  
    {   
        if ([toBeString length] > 20) { //若是輸入框內容大於20則彈出警告  
  textField.text = [toBeString substringToIndex:20];   
            UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@"超過最大字數不能輸入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] autorelease];   
            [alert show];   
            return NO;   
        }   
    }   
    return YES;   
}  
 
 
技術博客http://www.cnblogs.com/ChenYilong/   新浪微博http://weibo.com/luohanchenyilong  
27.UITextField實例二
UISearchBar,當輸入信息改變時,它就會調用textDidChange函數,可是UITextField沒有這個功能,惟一與這個相似的shouldChangeCharactersInRange函數,也是在文件尚未改變前就調用了,而不是在改變後調用,要想實現這個功能,咱們能夠增長事件監聽的方式.先來看看objective-c提供的接口:
ios代碼  
// add target/action for particular event. you can call this multiple times and you can specify multiple target/actions for a particular event.  
給特殊事件添加目標或者方法,你可以調用這個方法屢次,給特殊事件指定不少目標或者方法
// passing in nil as the target goes up the responder chain. The action may optionally include the sender and the event in that order  
target傳遞空,會創建響應鏈,在這行命令,方法能夠選擇包含方法發送者和事件兩個參數。
// the action cannot be NULL.   方法不能爲空。
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;  
 怎麼去使用這個接口呢?主要分爲兩步,第一步就是在UItextField組件中增長對文件編輯改變時事件的監聽,而後再實現監聽器監聽到事件時,所調用的方法.
ios代碼  
//第一步,對組件增長監聽器 能夠在viewDidLoad 方法中加入 textField 爲你自定義輸入框的名稱  
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];  
...  
//第二步,實現回調函數  
- (void) textFieldDidChange:(id) sender {  
    UITextField *_field = (UITextField *)sender;  
    NSLog(@"%@",[_field text]);  
}  
 技術博客http://www.cnblogs.com/ChenYilong/   新浪微博http://weibo.com/luohanchenyilong  
28.UITextField實例三
UITextField
控件處理鍵盤彈出時遮住輸入框的問題
打開鍵盤捲動文本字段
默認狀況下打開鍵盤會遮住下面的view,帶來一點點困擾,不過這不是什麼大問題,咱們使用點小小的手段就能夠解決。
 
首先咱們要知道鍵盤的高度是固定不變的,不過在IOS 5.0 之後鍵盤的高度貌似不是216了,不過沒關係,咱們調整調整就是了:
 
pastedGraphic.png
 
ide

//轉載請註明出處--本文永久連接:http://www.cnblogs.com/ChenYilong/p/3495980.html函數


咱們採起的方法就是在textField(有多是其餘控件)接收到彈出鍵盤事件時把self.view總體上移216px(咱們就以iPhone豎屏爲例了)
首先咱們要設置textField的代理,咱們就設爲當前控制器了。
 
ios代碼  
textField,delegate=self;  
  
而後咱們在當前控制器實現下面兩個委託方法:
ios代碼  
- (void)textFieldDidBeginEditing:(UITextField *)textField  
{ //
當點觸textField內部,開始編輯都會調用這個方法。textField將成爲first responder   
       NSTimeInterval animationDuration = 0.30f;      
      CGRect frame = self.view.frame;  
      frame.origin.y -=216;  
      frame.size.height +=216;  
      self.view.frame = frame;  
       [UIView beginAnimations:@"ResizeView" context:nil];  
       [UIView setAnimationDuration:animationDuration];  
       self.view.frame = frame;                  
       [UIView commitAnimations];                  
}  
ios代碼 
- (BOOL)textFieldShouldReturn:(UITextField *)textField   
{//
當用戶按下ruturn,把焦點從textField移開那麼鍵盤就會消失了  
        NSTimeInterval animationDuration = 0.30f;  
        CGRect frame = self.view.frame;      
        frame.origin.y +=216;        
        frame.size. height -=216;     
        self.view.frame = frame;  
    //self.view
移回原位置    
    [UIView beginAnimations:@"ResizeView" context:nil];  
    [UIView setAnimationDuration:animationDuration];  
        self.view.frame = frame;                  
        [UIView commitAnimations];  
        [textField resignFirstResponder];     
}     


post

 

本文對應pdf文檔下載連接,猛戳—>:https://www.evernote.com/shard/s227/sh/5398a4e6-ee35-4c3a-98eb-4b52dacab704/e522cc51e54856e632d55b322221cbd7

//轉載請註明出處--本文永久連接:http://www.cnblogs.com/ChenYilong/p/3495980.html

本系列全部開發文檔翻譯連接地址:iOS7開發-Apple蘋果iPhone開發Xcode官方文檔翻譯PDF下載地址

相關文章
相關標籤/搜索