最近寫的項目有這個需求,看了別人寫的,打算自己寫一份備用
這是原文[http://blog.csdn.net/h3c4lenovo/article/details/8515304]
- 第一步需要有一個textField,遵守協(xié)議,實現(xiàn)代理
self.mytextfield.delegate = self;
-然后需要實現(xiàn)的代理方法就是這個
- (BOOL)textField:(UITextField )textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString )string{
//判斷是否是當前輸入框
if (self.mytextfield == textField) {
NSString text = self.mytextfield.text;
//限制字符 至于那個\b用在search中 寫不寫都行
NSCharacterSet characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
//去掉空格
string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
//檢查除數(shù)字之外的字符 invertedSet:意思是取反,除了數(shù)字和退格的內(nèi)容
if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
return NO;
}
//拼接text 要輸入的部分+原有的
text = [text stringByReplacingCharactersInRange:range withString:string];
//去空格
text = [text stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString newString = @"";
//四位添加空格
while (text.length > 0) {
NSString subString = [text substringToIndex:MIN(text.length, 4)];
newString = [newString stringByAppendingString:subString];
if (subString.length == 4) {
newString = [newString stringByAppendingString:@" "];
}
text = [text substringFromIndex:MIN(text.length, 4)];
}
//去掉除數(shù)字部分
newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
// 限制長度
if (newString.length >= 24) {
return NO;
}
//賦值
[self.mytextfield setText:newString];
return NO;
}
return YES;
}
基本就是這樣,注釋寫的很詳細了