字符限制和字节限制不一样,所以我们千万不能弄错了,通常我们用的是字符限制。
------以汉字为例------
字符限制:输入框只检测输入确定的文字
- (void)textFieldDidChange:(UITextField *)textField
{
NSString *toBeString = textField.text;
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制,防止中文被截断
if (!position){
if (toBeString.length > _maxLength){
//中文和emoj表情存在问题,需要对此进行处理
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, _maxLength)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
字节限制:输入框中也会检测到你输入的拼音
- (void)textFieldDidChange:(UITextField *)textField
{
NSString *toBeString = textField.text;
//---字节处理
NSInteger bytesCount = strlen([textField.text UTF8String]);
if (bytesCount > _maxBytesLength) {
NSString *content = [textField.text subStrWithUtf8Len:(int)_maxBytesLength];
textField.text = content;
}
}