在不少状况下都会要求限制输入框的字数长度,在非中文状况下简单的处理下便可,但在系统自带的中文输入发现你会发现,即便输入拼音也会被限制。咱们须要对中文输入法进行单独的设置:
1.给UITextField绑定一个方法:
[_summaryField addTarget:self action:@selector(editChange:) forControlEvents:UIControlEventEditingChanged];
2.实现方法code
//最多输入6个字 #define kMaxLength 6 - (void)editChange:(UITextField*)textfield { NSString *toBeString = textfield.text; NSString *lang = [[UIApplication sharedApplication]textInputMode].primaryLanguage; // 键盘输入模 if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写 UITextRange *selectedRange = [textfield markedTextRange]; //获取高亮部分 UITextPosition *position = [textfield positionFromPosition:selectedRange.start offset:0]; // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 if (!position) { if (toBeString.length > kMaxLength) { NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:kMaxLength]; if (rangeIndex.length == 1) { textfield.text = [toBeString substringToIndex:kMaxLength]; } else { NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, kMaxLength)]; textfield.text = [toBeString substringWithRange:rangeRange]; } } } } // 中文输入法之外的直接对其统计限制便可,不考虑其余语种状况 else{ if (toBeString.length > kMaxLength) { NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:kMaxLength]; if (rangeIndex.length == 1) { textfield.text = [toBeString substringToIndex:kMaxLength]; } else { NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0,kMaxLength)]; textfield.text = [toBeString substringWithRange:rangeRange]; } } }```
做者:梦里挑灯看键
连接:https://www.jianshu.com/p/7cb8bfde2778
來源:简书
简书著做权归做者全部,任何形式的转载都请联系做者得到受权并注明出处。get