UITextField對(duì)輸入的內(nèi)容的長度限制和內(nèi)容限制

1.是通過添加事件的方式來限制:

- (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)容和文本的長度

-?(void)limit:(UITextField*)textField{

//限制文本的輸入長度不得大于10個(gè)字符長度

if(textField.text.length>=10){

//截取文本字符長度為10的內(nèi)容

textField.text=?[textField.textsubstringToIndex:10];

}

}


2.通過UITextField的代理方法來進(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)容的長度不得超過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;

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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