2016-01-07 textview 字数限制

  1. 字母数字  限制字数 delegate
  2. //控制输入文字的长度和内容,可通调用以下代理方法实现

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

    {

        if (range.location>=20)

        {

            //控制输入文本的长度

            UIAlertView *alve = [[UIAlertView alloc]initWithTitle:@"提示" message:@"输入内容最多20" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

            [alve show];

            

            return  NO;

        }

        if ([text isEqualToString:@" "]) {

            //禁止输入换行

            [textView resignFirstResponder];

            return NO;

        }

        else

        {

            return YES;

        }

    }

 3.汉字的

#define MaxNumberOfDescriptionChars  20

 viewdidload 中

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewEditChanged:) name:UITextViewTextDidChangeNotification object:_descrViewa];

    

- (void)dealloc

 

{

    

    [[NSNotificationCenter defaultCenter] removeObserver:self];

    [[NSNotificationCenter defaultCenter]removeObserver:self

                                                   name:@"UITextViewTextDidChangeNotification"

                                                 object:_descrViewa];

    

}

 

 

    

    // 监听文本改变

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

        

        UITextView *textView = (UITextView *)obj.object;

        

        

        

        NSString *toBeString = textView.text;

        

        NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式

        

        if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写

            

            UITextRange *selectedRange = [textView markedTextRange];

            

            //获取高亮部分

            

            UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];

            

            // 没有高亮选择的字,则对已输入的文字进行字数统计和限制

            

            if (!position) {

                

                if (toBeString.length > MaxNumberOfDescriptionChars) {

                    

                    textView.text = [toBeString substringToIndex:MaxNumberOfDescriptionChars];

                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"不能超过20个字!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

                    [alert show];

                }

                

            }

            

            // 有高亮选择的字符串,则暂不对文字进行统计和限制

            

            else{

                

                

                

            }

            

        }

        

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

        

        else{

            

            if (toBeString.length > MaxNumberOfDescriptionChars) {

                

                textView.text = [toBeString substringToIndex:MaxNumberOfDescriptionChars];

                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"不能超过20个字!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

                [alert show];

                

            }

            

        }

        

    }

    

原文地址:https://www.cnblogs.com/gzz2016/p/5109496.html