怎么改變uitextfield placeholder的顏色和位置?
-1检激、繼承uitextfield肴捉,重寫這個方法
- (void) drawPlaceholderInRect:(CGRect)rect {
[[UIColor blueColor] setFill];
[self.placeholder drawInRect:rect withFont:self.font lineBreakMode:UILineBreakModeTailTruncation alignment:self.textAlignment];
}
輸入長度的控制 -- (這個控件的使用重點8孤隆)
有個需求 ,要求輸入的密碼 和 用戶名的長度不超過 6位齿穗?
-
通常我們使用的是:
判斷長度.png -
但是傲隶,上面的判斷是有問題的!并不能很好的判斷!
-
接下來是我要用UITextfiled 的一個代理方法處理那個問題窃页,首先跺株,設(shè)置代理 <UITextFieldDelegate> 和 textField.delegate = self;
下面是代碼.png
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
// 用當(dāng)前輸入框中得文本創(chuàng)建一個可變字符串
NSMutableString * muStr = [[NSMutableString alloc] initWithString:textField.text];
// 將當(dāng)前輸入的字符插入到可變字符串相應(yīng)的位置
[muStr insertString:string atIndex:range.location];
// 判斷插入以后是否大于允許輸入的最大長度
return muStr.length <= 6;
}
-
通常我們會加邏輯判斷一下:if (xxx == _xxx)
邏輯判斷一下.png
下面是介紹 UITextField 的基本用法:
1、屬性的設(shè)置
<1>字體 -- font
<2>文本顏色 -- color
<3>設(shè)置密碼輸入鍵盤 -- secureTextEntry
<4>設(shè)置鍵盤類型 -- keyboardType
<5>設(shè)置清除模式 -- clearButtonMode
<6>設(shè)置空白提示 -- placeholder
<7>設(shè)置是否自動大寫 -- autocapitalizationType
<8>是否自動顯示修正后的單詞 --autocorrectionType
<9>設(shè)置文本對齊方式 -- textAlignment
<10>設(shè)置背景圖片 -- background
<11>左側(cè)提示圖片 -- leftView
-
文本顏色
文本顏色.png
_nameTextFile.textColor = [UIColor orangeColor];// 文本顏色
-
設(shè)置密碼輸入鍵盤脖卖、鍵盤類型
// 密碼類型
_nameTextFile.secureTextEntry = YES;// 密碼類型
// 鍵盤模式
_nameTextFile.keyboardType = UIKeyboardTypeNumberPad; //鍵盤模式
// 設(shè)置清除模式
_nameTextFile.clearButtonMode = UITextFieldViewModeAlways;// 設(shè)置清除模式
1.png
// 設(shè)置空白提示
_nameTextFile.placeholder = @"請輸入密碼";
-
設(shè)置空白提示
設(shè)置空白提示.png
-
去掉自動大小寫
// 去掉自動大小寫 _nameTextFile.autocapitalizationType = UITextAutocapitalizationTypeNone;
小寫.png
-
關(guān)閉拼寫自動提示
// 關(guān)閉拼寫自動提示 _nameTextFile.autocorrectionType = UITextAutocorrectionTypeNo;
-
設(shè)置文本對齊方式
// 設(shè)置文本對齊方式 _nameTextFile.textAlignment = NSTextAlignmentRight;
對齊方式.png
-
設(shè)置背景圖片
-
注意:如果設(shè)置 borderStyle 為:UITextBorderStyleRoundedRect乒省,背景圖片是顯示不出來的!其它類型都可以設(shè)置圖片畦木!
圖片丑了點.png
-
導(dǎo)航欄左側(cè)提示圖片 ---(leftView 和 leftViewMode 是同時使用的袖扛!)
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; imgView.image = [UIImage imageNamed:@"logo64X64"]; // xxxModel顯示模式 和 xxxView 一齊使用 _nameTextFile.leftView = imgView; _nameTextFile.leftViewMode = UITextFieldViewModeAlways;// 設(shè)置模式,才能顯示
左右兩邊都可以設(shè)置提示圖標(biāo).png
鍵盤處理: --- 首先要設(shè)置 delegate
-
<UITextFieldDelegate> 和 _nameTextFile.delegate = self;
-
文本框 和 鍵盤是同時使用的十籍,就像leftView 和 leftViewMode 是同時使用的蛆封!
// 重寫代理方法 -- 點擊 鍵盤 “return”按鈕退出鍵盤 - (BOOL)textFieldShouldReturn:(UITextField *)textField { // 退出鍵盤 [_nameTextFile resignFirstResponder]; return YES; }
-
方式2 --- 點擊背景則回收鍵盤(背景圖片添加手勢)或 使用UIView。
點擊.png
-
點擊鍵盤“return”按鈕勾栗,自動切換到下一個輸入框惨篱?
-
要處理鍵盤遮蓋文本寬!設(shè)置 frame 的View 往上移動械姻!
-
多個文本框:其實一樣妒蛇!執(zhí)行代理方法。判斷一下哪個退出楷拳,那個成為第一響應(yīng)者绣夺!---- 最后,恢復(fù)View 的frame欢揖!
方法2.png
-
用手勢就跟簡單了:只需在手勢的構(gòu)造器里陶耍,直接 退出第一響應(yīng)者就OK了。
手勢直接退出鍵盤.png
使用 NSNotificationCenter處理鍵盤"遮蓋"輸入框 和 退出她混?
-
注意 name 的值A页!坤按!
// 監(jiān)聽鍵盤顯示的通知 // 當(dāng)接收到UIKeyboardWillShowNotification 通知以后就給self 發(fā)送一個ViewUp消息 // 注意:name [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewUp) name:UIKeyboardWillShowNotification object:nil]; // 通知中心 -- 注意:name 的值 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewBack) name:UIKeyboardWillHideNotification object:nil];
-
通知方法 -- 處理遮蓋輸入框毯欣!
// View 的frame 向上移動 80 -(void)viewUp{ NSLog(@"鍵盤出來啦"); self.view.frame = CGRectMake(0, -80, 320, 480); } // 恢復(fù) View 的frame -(void)viewBack{ self.view.frame = CGRectMake(0, 0, 320, 480); }