UITextField+RQExtension.m 1.2 KB

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