UITextField字数限制

UITextField字数限制,监听通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(limitLength:) name:UITextViewTextDidChangeNotification object:nil];//限制字数

 

-(void)limitLength:(NSNotification*)obj{

    NSInteger kMaxLength = 7;

    UITextField *textField = (UITextField *)obj.object;

    NSString *toBeString = textField.text;

    NSString *lang = [textField.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)

            {

                textField.text = [toBeString substringToIndex:kMaxLength];

            }

        }

        

    }

    // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

    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.cnblogs.com/yeschenbaby/p/6376639.html