iOS UITextView设置输入字数

今天在创建这个页面的时候遇到了一个UITextView超过设定个数时在代理协议方法中设置不可输入时,需要添加删除操作,否则会造成当达到字数限制后删除键也不能使用的后果.

image

// 发送通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(inputTextViewDidChange) name:UITextViewTextDidChangeNotification object: self.inputTextView];

实现通知的方法

- (void)inputTextViewDidChange

{

 NSString* toBeString = self.inputTextView.text;

 NSIntegertextleng = 0;

 //获取高亮部分

 UITextRange*selectedRange = [self.inputTextViewmarkedTextRange];

 UITextPosition*position = [self.inputTextViewpositionFromPosition:selectedRange.startoffset:0];

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

 if(!position)

    {

 if(toBeString.length> totalNum&& self.inputTextView.markedTextRange== nil)

        {

 //用字符串的字符编码指定索引查找位置

 NSRangerangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:totalNum];

 if(rangeIndex.length== 1)

            {

 self.inputTextView.text= [toBeString substringToIndex:totalNum];

            }

 else

            {

 self.inputTextView.text= [toBeString substringWithRange:NSMakeRange(0, textleng)];

            }

} else{

            textleng = toBeString.length;

        }

    }

}

iOS UITextView设置输入字数_第1张图片
image

协议方法:

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

 _numberLabel.text= [NSStringstringWithFormat:@"%lu/%d",(unsignedlong)textView.text.length,totalNum];

 if(textView == self.inputTextView) {

//************** UITextView超过设定个数时在代理协议方法中设置不可输入时,需要添加删除操作,否则会造成当达到字数限制后删除键也不能使用的后果.

 //******* 这里的if时候为了获取删除操作,如果没有次if会造成当达到字数限制后删除键也不能使用的后果.

 if(range.length== 1&& text.length== 0) {

 returnYES;

        }

 elseif(textView.text.length> totalNum) {

            textView.text= [textView.textsubstringToIndex:totalNum];

 returnNO;

        }

    }

 returnYES;

}

![image](http://upload-images.jianshu.io/upload_images/3075498-ee574fb7c0b73a9a?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

你可能感兴趣的:(iOS UITextView设置输入字数)