限制UITextField中最多输入字数

(新增:同样可以对UITextView中的输入字数进行限制

demo地址:https://gitee.com/liangsenliangsen/commitLength.git

对UITextField进行监听

代码:

#define MAX_STARWORDS_LENGTH 20

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFieldEditChanged:) name:@"UITextFieldTextDidChangeNotification" object:field.textField];

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

    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 > MAX_STARWORDS_LENGTH)

            {

                NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];

                if (rangeIndex.length == 1)

                {

                    textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];

                }

                else

                {

                    NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];

                    textField.text = [toBeString substringWithRange:rangeRange];

                }

            }

        }


    }

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

    else

    {

        if (toBeString.length > MAX_STARWORDS_LENGTH)

        {

            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];

            if (rangeIndex.length == 1)

            {

                textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];

            }

            else

            {

                NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];

                textField.text = [toBeString substringWithRange:rangeRange];

            }

        }

    }


}


本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。

你可能感兴趣的:(限制UITextField中最多输入字数)