在对应的回调方法里面去判断
UITextRange *selectedRange = [textFieldtmp markedTextRange];
UITextPosition *position = [textFieldtmp positionFromPosition:selectedRange.start offset:0];
if (!position) {//非高亮
NSUInteger bytes = [self cacluteStringNumber:textFieldtmp.text];
if (bytes > 5) { //5在这里是限制的字节数的一般
textFieldtmp.text = self.currentNickName;
} else {
self.currentNickName = textFieldtmp.text;
}
}
在这里多说一下markedTextRange,苹果自带的输入法输入汉语的时候会有高亮的展位的文字,如果在代理方法里面去改变去对应的文本框的字符数,当markedTextRange为nil的时候高亮的颜色为空。可以监听高亮的状态。
计算对应的字节数
- (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;
}
网友评论