在對(duì)應(yīng)的回調(diào)方法里面去判斷
UITextRange *selectedRange = [textFieldtmp markedTextRange];
UITextPosition *position = [textFieldtmp positionFromPosition:selectedRange.start offset:0];
if (!position) {//非高亮
NSUInteger bytes = [self cacluteStringNumber:textFieldtmp.text];
if (bytes > 5) { //5在這里是限制的字節(jié)數(shù)的一般
textFieldtmp.text = self.currentNickName;
} else {
self.currentNickName = textFieldtmp.text;
}
}
在這里多說(shuō)一下markedTextRange图云,蘋(píng)果自帶的輸入法輸入漢語(yǔ)的時(shí)候會(huì)有高亮的展位的文字晶通,如果在代理方法里面去改變?nèi)?duì)應(yīng)的文本框的字符數(shù)级野,當(dāng)markedTextRange為nil的時(shí)候高亮的顏色為空棒厘≌掣眩可以監(jiān)聽(tīng)高亮的狀態(tài)如迟。
計(jì)算對(duì)應(yīng)的字節(jié)數(shù)
- (NSUInteger)cacluteStringNumber:(NSString *)string {
if (string.length ==0) return 0;
int strlength = 0;
char* p = (char*)[string cStringUsingEncoding:NSUnicodeStringEncoding];
for (int i=0 ; i<[string lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++)
{
if (*p) {
p++;
strlength++;
}
else {
p++;
}
}
return (strlength+1)/2;
}