1234567891011121314151617181920212223242526272829303132333435 |
- //
- // UITextField+RQExtension.m
- // RQCommon
- //
- // Created by 张嵘 on 2018/11/23.
- // Copyright © 2018 张嵘. All rights reserved.
- //
- #import "UITextField+RQExtension.h"
- @implementation UITextField (RQExtension)
- - (void)rq_limitMaxLength:(NSInteger)maxLength {
- /// 修改昵称
- @weakify(self);
- [[[RACSignal merge:@[RACObserve(self, text),self.rac_textSignal]] skip:0] subscribeNext:^(NSString * text) {
- @strongify(self);
- UITextRange *selectedRange = [self markedTextRange];
- UITextPosition *position = [self positionFromPosition:selectedRange.start offset:0];
-
- // 没有高亮选择的字,则对已输入的文字进行字数统计和限制,防止中文被截断
- if (position) return ;
- if (text.length <= maxLength) return;
-
- //中文和emoj表情存在问题,需要对此进行处理
- NSRange range;
- NSUInteger inputLength = 0;
- for(int i =0 ; i < text.length && inputLength <= maxLength; i += range.length){
- range = [self.text rangeOfComposedCharacterSequenceAtIndex:i];
- inputLength += [text substringWithRange:range].length;
- if (inputLength > maxLength) self.text = [text substringWithRange:NSMakeRange(0, range.location)];
- }
- }];
- }
- @end
|