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. /// 修改昵称
  13. @weakify(self);
  14. [[[RACSignal merge:@[RACObserve(self, text),self.rac_textSignal]] skip:0] subscribeNext:^(NSString * text) {
  15. @strongify(self);
  16. UITextRange *selectedRange = [self markedTextRange];
  17. UITextPosition *position = [self positionFromPosition:selectedRange.start offset:0];
  18. // 没有高亮选择的字,则对已输入的文字进行字数统计和限制,防止中文被截断
  19. if (position) return ;
  20. if (text.length <= maxLength) return;
  21. //中文和emoj表情存在问题,需要对此进行处理
  22. NSRange range;
  23. NSUInteger inputLength = 0;
  24. for(int i =0 ; i < text.length && inputLength <= maxLength; i += range.length){
  25. range = [self.text rangeOfComposedCharacterSequenceAtIndex:i];
  26. inputLength += [text substringWithRange:range].length;
  27. if (inputLength > maxLength) self.text = [text substringWithRange:NSMakeRange(0, range.location)];
  28. }
  29. }];
  30. }
  31. @end