1. + (void)GBSpaceConstraintsLimitString:(id)Textfield
    2. limitMaxWord:(NSInteger)limitMaxWord{
    3. if ([Textfield isKindOfClass:UITextField.class]) {
    4. if ([(UITextField *)Textfield text].length > limitMaxWord) {
    5. UITextRange *markedRange = [Textfield markedTextRange];
    6. if (markedRange) {
    7. return;
    8. }
    9. //Emoji占2个字符,如果是超出了半个Emoji,用15位置来截取会出现Emoji截为2半
    10. //超出最大长度的那个字符序列(Emoji算一个字符序列)的range
    11. NSString * temText = @"";
    12. NSString * checker = [NSString stringWithFormat:@"%C", 8198]; // 英文输入时的字符集
    13. if ([[(UITextField *)Textfield text] rangeOfString:checker].length) {
    14. temText = [[(UITextField *)Textfield text] stringByReplacingOccurrencesOfString:checker withString:@""];
    15. }else{
    16. temText = [(UITextField *)Textfield text];
    17. }
    18. NSRange range = [temText rangeOfComposedCharacterSequenceAtIndex:limitMaxWord];
    19. ((UITextField *)Textfield).text = [temText substringToIndex:range.location];
    20. }
    21. }else if ([Textfield isKindOfClass:UITextView.class]){
    22. if ([(UITextView *)Textfield text].length > limitMaxWord) {
    23. UITextRange *markedRange = [Textfield markedTextRange];
    24. if (markedRange) {
    25. return;
    26. }
    27. //Emoji占2个字符,如果是超出了半个Emoji,用15位置来截取会出现Emoji截为2半
    28. //超出最大长度的那个字符序列(Emoji算一个字符序列)的range
    29. NSString * temText = @"";
    30. NSString * checker = [NSString stringWithFormat:@"%C", 8198]; // 英文输入时的字符集
    31. if ([[(UITextView *)Textfield text] rangeOfString:checker].length) {
    32. temText = [[(UITextView *)Textfield text] stringByReplacingOccurrencesOfString:checker withString:@""];
    33. }else{
    34. temText = [(UITextView *)Textfield text];
    35. }
    36. NSRange range = [temText rangeOfComposedCharacterSequenceAtIndex:limitMaxWord];
    37. ((UITextView *)Textfield).text = [temText substringToIndex:range.location];
    38. }
    39. }
    40. }