? ? 在做項(xiàng)目使用textfield的時(shí)候,可能是比較常見的賬號(hào)密碼輸入,有可能需要自定義左右按鈕,有可能需要處理輸入的各種情況,在使用使用具體的語法可能會(huì)不太記得,在這里我給大家總結(jié)下UITextField的常用語法,基本上已經(jīng)覆蓋全面,如果有什么要補(bǔ)充的可以給我留言,我及時(shí)修改.
1.初始化textfield并設(shè)置位置及大小
????UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];
2.設(shè)置邊框樣式泊交,只有設(shè)置了才會(huì)顯示邊框樣式??
????text.borderStyle = UITextBorderStyleRoundedRect;
??????typedef enum {
? ????? UITextBorderStyleNone, (無樣式)
? ? ????UITextBorderStyleLine,(線條)
? ????? UITextBorderStyleBezel,(線框)
? ? ????UITextBorderStyleRoundedRect(圓角)??
????? } UITextBorderStyle;
3.設(shè)置輸入框的背景顏色,此時(shí)設(shè)置為白色?如果使用了自定義的背景圖片邊框會(huì)被忽略掉??
?? ????text.backgroundColor = [UIColor whiteColor];
4.設(shè)置背景
? ????text.background = [UIImage imageNamed:@"dd.png"];
5.設(shè)置不可用背景?
????? text.disabledBackground = [UIImage imageNamed:@"cc.png"];
6.當(dāng)輸入框沒有內(nèi)容時(shí)棒旗,水印提示?提示內(nèi)容為password
????? text.placeholder = @"password";
7.設(shè)置輸入框內(nèi)容的字體樣式和大小
? ? ? text.font = [UIFont fontWithName:@"Arial" size:20.0f];??//設(shè)置字體樣式
? ? ? text.font = [[UIFont] fontWithSize: 15] //設(shè)置字體大小
??????text.textColor = [UIColor redColor];?//設(shè)置字體顏色??
8.輸入框中是否有個(gè)刪除的 X 號(hào)稿蹲,在什么時(shí)候顯示荆针,用于一次性刪除輸入框中的內(nèi)容
????? text.clearButtonMode = UITextFieldViewModeAlways;
? ? ? typedef enum {
????????????UITextFieldViewModeNever, //永不出現(xiàn)
????????????UITextFieldViewModeWhileEditing, //編輯時(shí)出現(xiàn)
????????????UITextFieldViewModeUnlessEditing,//除了編輯外都出現(xiàn)
????????????UITextFieldViewModeAlways //一直出現(xiàn)
? ? ? } UITextFieldViewMode;
9.輸入框中一開始就有的文字
????????text.text = @"一開始就在輸入框的文字";
10.密文輸入
? ? ? ? text.secureTextEntry = YES;
11.是否糾錯(cuò)
? ? ? ? text.autocorrectionType = UITextAutocorrectionTypeNo;
????????typedef enum {
????????????UITextAutocorrectionTypeDefault,默認(rèn)
????????????UITextAutocorrectionTypeNo,不自動(dòng)糾錯(cuò)
????????????UITextAutocorrectionTypeYes,自動(dòng)糾錯(cuò)
????????} UITextAutocorrectionType;
12.再次編輯就清空之前內(nèi)容
? ????????text.clearsOnBeginEditing = YES;?
13.內(nèi)容對(duì)齊方式
? ????????text.textAlignment = UITextAlignmentLeft;
????//內(nèi)容的垂直對(duì)齊方式UITextField繼承自UIControl,此類中有一個(gè)屬性contentVerticalAlignment
? ????????text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
14.自適應(yīng)文本窗口大小.默認(rèn)是保持原來大小,而讓長文本滾動(dòng)??
? ????????textFied.adjustsFontSizeToFitWidth = YES;
? ????????text.minimumFontSize = 20;?//設(shè)置自動(dòng)縮小顯示的最小字體大小
15.設(shè)置鍵盤的樣式
????????? text.keyboardType = UIKeyboardTypeNumberPad;
? ? ? ? ? ?typedef enum {
????????????????UIKeyboardTypeDefault,默認(rèn)鍵盤耙饰,支持所有字符
????????????????UIKeyboardTypeASCIICapable,支持ASCII的默認(rèn)鍵盤
????????????????UIKeyboardTypeNumbersAndPunctuation,標(biāo)準(zhǔn)電話鍵盤罢洲,支持+*#字符
????????????????UIKeyboardTypeURL,? ? ? ? ? ? URL鍵盤宾肺,支持.com按鈕只支持URL字符
????????????????UIKeyboardTypeNumberPad,數(shù)字鍵盤
????????????????UIKeyboardTypePhonePad,電話鍵盤
????????????????UIKeyboardTypeNamePhonePad,電話鍵盤,也支持輸入人名
????????????????UIKeyboardTypeEmailAddress,用于輸入電子郵件地址的鍵盤
????????????????UIKeyboardTypeDecimalPad,數(shù)字鍵盤有數(shù)字和小數(shù)點(diǎn)
????????????????UIKeyboardTypeTwitter,優(yōu)化的鍵盤贷腕,方便輸入@背镇、#字符
? ? ????????????UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,?
????????????} UIKeyboardType;
16.首字母是否大寫
????????? text.autocapitalizationType = UITextAutocapitalizationTypeNone;
? ? ? ? ? ?typedef enum {
????????????????UITextAutocapitalizationTypeNone,不自動(dòng)大寫
????????????????UITextAutocapitalizationTypeWords,單詞首字母大寫
????????????????UITextAutocapitalizationTypeSentences,句子的首字母大寫
????????????????UITextAutocapitalizationTypeAllCharacters,所有字母都大寫
????????????} UITextAutocapitalizationType;
17.return鍵樣式
? ????????text.returnKeyType =UIReturnKeyDone;
? ? ? ? ? typedef enum {
????????????????UIReturnKeyDefault,默認(rèn)灰色按鈕,標(biāo)有Return
????????????????UIReturnKeyGo,標(biāo)有Go的藍(lán)色按鈕
????????????????UIReturnKeyGoogle,標(biāo)有Google的藍(lán)色按鈕泽裳,用語搜索
????????????????UIReturnKeyJoin,標(biāo)有Join的藍(lán)色按鈕
????????????????UIReturnKeyNext,標(biāo)有Next的藍(lán)色按鈕
????????????????UIReturnKeyRoute,標(biāo)有Route的藍(lán)色按鈕
????????????????UIReturnKeySearch,標(biāo)有Search的藍(lán)色按鈕
????????????????UIReturnKeySend,標(biāo)有Send的藍(lán)色按鈕
????????????????UIReturnKeyYahoo,標(biāo)有Yahoo的藍(lán)色按鈕
????????????????UIReturnKeyYahoo,標(biāo)有Yahoo的藍(lán)色按鈕
????????????????UIReturnKeyEmergencyCall,緊急呼叫按鈕
????????????} UIReturnKeyType;
18.鍵盤外觀
? ? ? ? ? ?textView.keyboardAppearance = UIKeyboardAppearanceDefault瞒斩;
? ? ? ? ? ?typedef enum {
????????????????UIKeyboardAppearanceDefault,默認(rèn)外觀涮总,淺灰色
????????????????UIKeyboardAppearanceAlert胸囱,深灰石墨色
????????????} UIReturnKeyType;
19.設(shè)置代理?用于實(shí)現(xiàn)協(xié)議
????????? text.delegate = self;
20.把textfield加到視圖中
????????? [self.view addSubview:text];
21.右側(cè)添加自定義視圖
? ? ? ?//最右側(cè)加圖片是以下代碼???左側(cè)類似
????? ????? UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
? ? ????????text.rightView=image;
? ????????? text.rightViewMode = UITextFieldViewModeAlways; //右側(cè)視圖什么時(shí)候出現(xiàn) 這個(gè)是必須的,否則永遠(yuǎn)不會(huì)出現(xiàn)
????????????typedef enum {
? ? ????????????????UITextFieldViewModeNever,
? ????????????????? UITextFieldViewModeWhileEditing,
? ? ????????????????UITextFieldViewModeUnlessEditing,
? ????????????????? UITextFieldViewModeAlways
????????????} UITextFieldViewMode;
22.收回鍵盤
? ? ? ? ? ?text. resignFirstResponder (常用)
23.重寫繪制行為
????????除了UITextField對(duì)象的風(fēng)格選項(xiàng),你還可以定制化UITextField對(duì)象瀑梗,為他添加許多不同的重寫方法旺矾,來改變文本字段的顯示行為。這些方法都會(huì)返回一個(gè)CGRect結(jié)構(gòu)夺克,制定了文本字段每個(gè)部件的邊界范圍。以下方法都可以重寫嚎朽。
–?textRectForBounds: //重寫來重置文字區(qū)域
–?drawTextInRect: //改變繪文字屬性.重寫時(shí)調(diào)用super可以按默認(rèn)圖形屬性繪制,若自己完全重寫繪制函數(shù)铺纽,就不用調(diào)用super了.
–?placeholderRectForBounds: //重寫來重置占位符區(qū)域
–?drawPlaceholderInRect: //重寫改變繪制占位符屬性.重寫時(shí)調(diào)用super可以按默認(rèn)圖形屬性繪制,若自己完全重寫繪制函數(shù),就不用調(diào)用super了.
–?borderRectForBounds: //重寫來重置邊緣區(qū)域
–?editingRectForBounds: //重寫來重置編輯區(qū)域
–?clearButtonRectForBounds: //重寫來重置clearButton位置,改變size可能導(dǎo)致button的圖片失真
–?leftViewRectForBounds:
–?rightViewRectForBounds:
24.delegate
????????//1.是否應(yīng)該開始編輯 ,這里處理特殊情況下的不可編輯
? ? ? ? //2.開始編輯,這時(shí)候可以進(jìn)行重新請求數(shù)據(jù)等操作
? ? ? ? //3.編輯過程,在這里可以進(jìn)行輸入內(nèi)容限制輸入,如限制字?jǐn)?shù) 特殊字符等操作
????????//4.是否可以點(diǎn)擊return按鈕,這里可進(jìn)行例如字?jǐn)?shù)和規(guī)則等不符合時(shí)不可點(diǎn)擊等操作
? ? ? ? //5.是否應(yīng)該結(jié)束編輯,這個(gè)用的不多
? ? ? ? //6.已經(jīng)結(jié)束編輯,這時(shí)可以把textfield值傳遞,因?yàn)檫@時(shí)候是最終的值,或者進(jìn)行編輯結(jié)束的具體操作