//计算字符个数,一共是5
NSString *string = textView.text;
int totalChar = 0;
int totalHan = 0;
for (int i = 0; i< string.length; i++) {
NSRange range = NSMakeRange(i, 1);
NSString *subString = [string substringWithRange:range];
const char *cString = [subString UTF8String];
if (cString == NULL) {
//emoji
// totalChar += 2;
// i++;
}else if(strlen(cString)==3){
//汉字
totalHan += 1;
// i += 2;
}else{
//字符
totalChar += 1;
}
}
int last = 5 - totalHan - (totalChar/2 +1);
label.text = [NSString stringWithFormat:@"%d",last] ;
if (last<0) {
if(isFirst){
label.text = @"0";
[limittextview resignFirstResponder];
isFirst = NO;
}else{
[limittextview setText:[limittextview.text substringToIndex:string.length-1]];
label.text = @"0";
[limittextview resignFirstResponder];
}
return;
}else {
isFirst = YES;
}
isFirst 是初始化为yes 以下是在delegate里面进行判断的核心代码 ,这里限制的是 5个汉字10个字符