字数限制

text field

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewEditChanged:) name:UITextFieldTextDidChangeNotification object:nil];

/**

 *  当 text field 文本内容改变时 会调用此方法

 *

 *  @param notification

 */

-(void)textViewEditChanged:(NSNotification *)notification{

    

    // 拿到文本改变的 text field

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

    // 需要限制的长度

    NSUInteger maxLength = 10;

    if (maxLength == 0) return;

    

    // text field 的内容

    NSString *contentText = textField.text;

    

    // 获取高亮内容的范围

    UITextRange *selectedRange = [textField markedTextRange];

    // 这行代码 可以认为是 获取高亮内容的长度

    NSInteger markedTextLength = [textField offsetFromPosition:selectedRange.start toPosition:selectedRange.end];

    // 没有高亮内容时,对已输入的文字进行操作

    if (markedTextLength == 0) {

        // 如果 text field 的内容长度大于我们限制的内容长度

        if (contentText.length > maxLength) {

            // 截取从前面开始maxLength长度的字符串

            //            textField.text = [contentText substringToIndex:maxLength];

            // 此方法用于在字符串的一个range范围内,返回此range范围内完整的字符串的range

         //   [MBProgressHUD showError:@"只能输入10字" addView:nil];

            NSRange rangeRange = [contentText rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, maxLength)];

            textField.text = [contentText substringWithRange:rangeRange];

        }

    }

    

}

textView

在代理方法中 

- (void)textViewDidChange:(UITextView *)textView{

    if (textView.text.length==0) {

        placeLbl.hidden = NO;

    }else{

        placeLbl.hidden = YES;

        NSUInteger maxLength = 20;

        if (maxLength == 0) return;

        

        // textview 的内容

        NSString *contentText = textView.text;

        // 获取高亮内容的范围

        UITextRange *selectedRange = [textView markedTextRange];

        // 这行代码 可以认为是 获取高亮内容的长度

        NSInteger markedTextLength = [textView offsetFromPosition:selectedRange.start toPosition:selectedRange.end];

        // 没有高亮内容时,对已输入的文字进行操作

        if (markedTextLength == 0) {

            // 如果 textview 的内容长度大于我们限制的内容长度

            if (contentText.length > maxLength) {

                // 截取从前面开始maxLength长度的字符串

                //            textField.text = [contentText substringToIndex:maxLength];

                // 此方法用于在字符串的一个range范围内,返回此range范围内完整的字符串的range

            //    [MBProgressHUD showError:@"内容只能输入20字" addView:nil];

                NSRange rangeRange = [contentText rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, maxLength)];

                _textView.text = [contentText substringWithRange:rangeRange];

            }

        }

    }

}

猜你喜欢

转载自www.cnblogs.com/xiaodeng90/p/9584943.html