UITextField & UITextView

1.UITextField

UITextField繼承自UIView睡陪,只能單行輸入,可換行

1.1屬性

屬性補(bǔ)充:

1.光標(biāo)的顏色:nameField.tintColor = [UIColor blueColor];
2.設(shè)置UITextField的文字大小和字體:
field.font=[UIFont fontWithName:@"Times New Roman" size:20];
3.根據(jù)輸入文字動(dòng)態(tài)調(diào)整字體大小,需設(shè)置一個(gè)最小字體大写竺汀:
textField.adjustsFontSizeToFitWidth = YES;
textField.minimumFontSize = 10.0; //設(shè)置最小字體
4.文本框是否可編輯 不寫時(shí) 默認(rèn) YES 可編輯:
field.enabled = NO;
5.輸入框默認(rèn)輸入文本,有時(shí)需求UITextField只可顯示不可編輯的,此時(shí)起展示作用:用此屬性設(shè)置需要顯示的文本然后設(shè)置UITextField不可交互:
textField.userInteractionEnabled = NO;
6.用tag給文本框做一個(gè)標(biāo)記:
//做標(biāo)記
nameField.tag = 500;
//通過標(biāo)記 找到UITextField
UITextField *field =(UITextField *)[self.view viewWithTag:500];
7.可以定制邊框
//===邊框線條的粗細(xì)
field.layer.borderWidth = 1;
//====邊框線倒角
field.layer.cornerRadius = 10;
//====邊框線條顏色
field.layer.borderColor = [UIColor grayColor].CGColor;
8.設(shè)置將文字顯示成掩碼(密碼框)
nameField.secureTextEntry = YES;
9.設(shè)置清除按鈕的模式(有文字就有清除按鈕)
nameField.clearButtonMode = UITextFieldViewModeAlways;// 這個(gè)是總顯示

#import "YCTextField.h"

#import <objc/runtime.h>

#define YCplaceholderTextColor @"_placeholderLabel.textColor"

@implementation YCTextField

+ (void)initialize {   

     [self getIvars]; 

}

// 獲取私有變量名稱

+ (void)getIvars {    

     unsigned int count = 0;    

      Ivar *ivars = class_copyIvarList([UITextField class], &count);   

      for (int i = 0; i < count; i++) {       

            Ivar ivar = ivars[i];        

            NSLog(@"%s----%s", ivar_getName(ivar), 

            ivar_getTypeEncoding(ivar));   

       }

 } 

 - (void)awakeFromNib {    

      // 設(shè)置光標(biāo)的顏色    

      self.tintColor = self.textColor;

 }

// 獲取到焦點(diǎn)

- (BOOL)becomeFirstResponder {    

      // 利用運(yùn)行時(shí)獲取key,設(shè)置占位文字的顏色   

      [self setValue:self.textColor forKeyPath:YCplaceholderTextColor];  

      return [super becomeFirstResponder];

 }

// ===失去焦點(diǎn)====

- (BOOL)resignFirstResponder {   

     // 利用運(yùn)行時(shí)獲取key,設(shè)置占位文字的顏色   

      [self setValue:[UIColor grayColor] forKeyPath:YCplaceholderTextColor];     

     return [super resignFirstResponder]; 
}
@end

原理如下圖:

UITextfield在storyboard中設(shè)置屬性

詳解部分屬性:

iOS 輸入框(UITextField)密碼明暗文切換:

在做明暗文切換(密碼輸入框)的時(shí)候遇見一個(gè)坑淀零,就是切換secureTextEntry的時(shí)候挽绩,輸入框的光標(biāo)會(huì)偏移,下面列出了一個(gè)解決辦法及一種明暗文切換的方法驾中。

切換到密文狀態(tài),再次編輯時(shí),內(nèi)容清空
重現(xiàn):
1.切換明密文狀態(tài),最后在密文狀態(tài),再次編輯,輸入任意字符,內(nèi)容清空;2.其他textField獲取焦點(diǎn),再切回來(密文狀態(tài)),內(nèi)容清空
解決方法:
如下圖

http://jingyan.baidu.com/article/f71d6037a75b2b1ab741d166.html

1.2代理方法

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
//當(dāng)用戶使用自動(dòng)更正功能唉堪,把輸入的文字修改為推薦的文字時(shí)模聋,就會(huì)調(diào)用這個(gè)方法。
//這對(duì)于想要加入撤銷選項(xiàng)的應(yīng)用程序特別有用
//可以跟蹤字段內(nèi)所做的最后一次修改唠亚,也可以對(duì)所有編輯做日志記錄,用作審計(jì)用途链方。
//要防止文字被改變可以返回NO
//這個(gè)方法的參數(shù)中有一個(gè)NSRange對(duì)象,指明了被改變文字的位置灶搜,建議修改的文本也在其中  
return YES;
}
限定只能輸入特定的字符
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  NSString* number= Knum;
  NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number]; 
  return [numberPre evaluateWithObject:string];
}
上面那個(gè)Knum是一個(gè)宏祟蚀,可以在文件頂部定義:
#define Knum @"^[0-9]+$"
如果你要限制輸入英文的話,就可以把這個(gè)定義為:
#define Knum @"^[A-Za-z]+$"
備注:這些正則||謂詞請(qǐng)看相關(guān)文檔

當(dāng)然占调,你還可以在以上方法return之前暂题,做一提示的,比如提示用戶只能輸入數(shù)字之類的究珊。
如果你覺得有需要的話薪者。限制只能輸入一定長(zhǎng)度的字符:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

 //string就是此時(shí)輸入的那個(gè)字符 textField就是此時(shí)正在輸入的那個(gè)輸入框
 返回YES就是可以改變輸入框的值 NO相反
   if ([string isEqualToString:@"n"]) //按會(huì)車可以改變 { 

      return YES; 
   }
   NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
   //得到輸入框的內(nèi)容 

  if (self.myTextField == textField)  { 
  //判斷是否時(shí)我們想要限定的那個(gè)輸入框
      if ([toBeString length] > 20) { 
      //如果輸入框內(nèi)容大于20則彈出警告
      textField.text = [toBeString substringToIndex:20]; 
      UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@"超過最大字?jǐn)?shù)不能輸入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] autorelease];
      [alert show]; return NO; 
      } 
  }
  return YES;
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

   return [self validateNumber:string];
}

- (BOOL)validateNumber:(NSString*)number {

   BOOL res = YES;
   NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
   int i = 0;
   while (i < number.length) {
       NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
       NSRange range = [string rangeOfCharacterFromSet:tmpSet];
       if (range.length == 0) {
           res = NO;
           break;
       }
       i++;
   }
   return res;
}

1.3通知

1.4限制UITextField的輸入字?jǐn)?shù)

輸入控制小數(shù)點(diǎn)后位數(shù)(開發(fā)筆記四的27):http://www.reibang.com/p/5cc95f9d4c2e

方法一:

接上面的這個(gè)方法

鏈接:http://blog.csdn.net/jasonblog/article/details/23771117/
http://blog.csdn.net/blackwolfsky/article/details/51264060

方法二:

效果圖
代碼
代碼

相關(guān)鏈接:http://www.reibang.com/p/900739fb1b11

1.5 UITextField寬度自適應(yīng)

  • 創(chuàng)建UITextField的category:
h文件
m文件
  • 使用:
使用

1.6一個(gè)頁(yè)面同時(shí)有兩個(gè)UITextField,點(diǎn)擊其中一個(gè)的時(shí)候不讓另外一個(gè)的鍵盤響應(yīng)

_pageTF
self.search
進(jìn)行tag區(qū)分判斷即可

2.UITextView

2.1繼承于UIScrollView剿涮,所以它具有UIScrollView的屬性和方法

Delegate

//網(wǎng)址是否可以連接
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange { 
  return YES;
}
//文字出現(xiàn)改變就執(zhí)行:文字能否更改
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { 
  //點(diǎn)擊return收回鍵盤 
  if ([text isEqualToString:@"\n"]) {

      [textView resignFirstResponder]; 
  } 
  return YES;
}

3.占位符的定制

http://www.reibang.com/p/9edb8be75e0b

3.1 UITextField的占位符位置

將占位符位置居中(屬性方法):attributedPlaceholder

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.alignment = NSTextAlignmentCenter;
NSAttributedString *attri = [[NSAttributedString alloc] initWithString:@"請(qǐng)輸入推薦人的手機(jī)號(hào)" attributes:@{NSForegroundColorAttributeName:[UToColor grayColor],NSFontAttributeName:[UToFont defaultAdaptationFontWithSize:16], NSParagraphStyleAttributeName:style}];
_phoneTF.attributedPlaceholder = attri;

3.2 UITextField的占位符顏色定制

Category占位字符顏色定制:http://www.reibang.com/p/a1db5575528b

3.3 UITextView定制(含占位符字體 & 顏色定制)

控制器中調(diào)用:
@property (nonatomic, strong) UToDescriptionTextView *desTextView;

效果:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末言津,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子取试,更是在濱河造成了極大的恐慌悬槽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬浓,死亡現(xiàn)場(chǎng)離奇詭異初婆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)猿棉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門磅叛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人萨赁,你說我怎么就攤上這事弊琴。” “怎么了杖爽?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵敲董,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我慰安,道長(zhǎng)腋寨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任泻帮,我火速辦了婚禮精置,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锣杂。我一直安慰自己脂倦,他們只是感情好番宁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赖阻,像睡著了一般蝶押。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上火欧,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天棋电,我揣著相機(jī)與錄音,去河邊找鬼苇侵。 笑死赶盔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的榆浓。 我是一名探鬼主播于未,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼陡鹃!你這毒婦竟也來了烘浦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤萍鲸,失蹤者是張志新(化名)和其女友劉穎闷叉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脊阴,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡握侧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘿期。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藕咏。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖秽五,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饥悴,我是刑警寧澤坦喘,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站西设,受9級(jí)特大地震影響瓣铣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贷揽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一棠笑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧禽绪,春花似錦蓖救、人聲如沸洪规。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)斩例。三九已至,卻和暖如春从橘,著一層夾襖步出監(jiān)牢的瞬間念赶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工恰力, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叉谜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓踩萎,卻偏偏與公主長(zhǎng)得像停局,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驻民,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容