1.是通過(guò)添加事件的方式來(lái)限制:
- (void)viewDidLoad {
[superviewDidLoad];
//創(chuàng)建文本框
UITextField*textField?=?[[UITextFieldalloc]initWithFrame:CGRectMake(0,100,?[UIScreenmainScreen].bounds.size.width,50)];
//文本框的邊框的樣式
textField.borderStyle=?UITextBorderStyleRoundedRect;
//為文本框添加事件(因?yàn)閁ITextField是繼承于UIControl的)
[textFieldaddTarget:selfaction:@selector(limit:)forControlEvents:UIControlEventEditingChanged];
//添加到當(dāng)前視圖
[self.viewaddSubview:textField];
}
//限制文本框的輸入內(nèi)容和文本的長(zhǎng)度
-?(void)limit:(UITextField*)textField{
//限制文本的輸入長(zhǎng)度不得大于10個(gè)字符長(zhǎng)度
if(textField.text.length>=10){
//截取文本字符長(zhǎng)度為10的內(nèi)容
textField.text=?[textField.textsubstringToIndex:10];
}
}
2.通過(guò)UITextField的代理方法來(lái)進(jìn)行限制的,并在此方法中進(jìn)行輸入內(nèi)容的限制:
#pragma mark - UITextFieldDelegate
-?(BOOL)textField:(UITextField*)textFieldshouldChangeCharactersInRange:(NSRange)rangereplacementString:(NSString*)string{
//先設(shè)置只能輸入的集合??invertedSet就是將咱們?cè)试S輸入的字符串的字符找出
NSCharacterSet*canInputSet?=?[[NSCharacterSetcharacterSetWithCharactersInString:textFieldContent]invertedSet];
//把允許輸入的內(nèi)容轉(zhuǎn)化成數(shù)組,再轉(zhuǎn)化成字符串
NSString*str?=?[[stringcomponentsSeparatedByCharactersInSet:canInputSet]componentsJoinedByString:@""];
//判斷輸入的字符是否包含在允許輸入的字符之內(nèi)
BOOLisSuccess?=?[stringisEqualToString:str];
//限制文本框輸入內(nèi)容的長(zhǎng)度不得超過(guò)10且有輸入內(nèi)容的限制
if(textField.text.length<=10&&?isSuccess){
//返回值為YES的時(shí)候,文本框可以進(jìn)行編輯
returnYES;
}else{
//當(dāng)返回NO的時(shí)候,文本框內(nèi)的內(nèi)容不會(huì)在再改變,甚至不能進(jìn)行刪除
returnNO;
}
}