在做限制文本輸入長度的時候遇到很多坑,下面就是很好的解決了文本輸入長度限制的方法:
-textFiled的字?jǐn)?shù)限制,一個漢字相當(dāng)于2字符:
[_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChange:(UITextField *)textField
{
NSInteger inter = 5;//限制文本輸入不超過5個漢字
NSNumber *number;
if ([self IsChinese:textField.text]==0) {//判斷輸了多少漢字
NSInteger number1 = inter*2;
number = [NSNumber numberWithInteger:number1] ;
}else{
if ([self IsChinese:textField.text] <= inter) {
NSInteger nuber2 = inter*2 - [BJSounds IsChinese:textField.text]*2 + [BJSounds IsChinese:textField.text];
number =? [NSNumber numberWithInteger:nuber2];
}else{
number = [NSNumber numberWithInteger:inter];
}
}
if (number && textField.text.length > [number integerValue] && textField.markedTextRange == nil) {
textField.text = [textField.text substringWithRange: NSMakeRange(0, [number integerValue])];
}
}
- (NSInteger)IsChinese:(NSString *)str {
int j = 0;
for(int i=0; i< [str length];i++){
int a = [str characterAtIndex:i];
if( a > 0x4e00 && a < 0x9fff)
{
j++;
}
}
return j;
}