核心实现方案,利用字符串裁剪并赋值的方式时间
效果图如下
textField的代理方法,主要判断回车的时候就不让继续输入字符
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
if ([text isEqualToString:@"\n"]) {
return NO;
}
return YES;
}
textField的代理方法,当文本框中的字符串的字符增加或者减少一个字符都会调用该方法。
- (void)textViewDidChange:(UITextView *)textView{
UITextRange *selectedRange = [textView markedTextRange];
//获取高亮部分
UITextPosition *pos = [textView positionFromPosition:selectedRange.start offset:0]
//如果在变化中是高亮部分在变,就不要计算字符了
if (selectedRange && pos) {
return;
}
NSUInteger count = textView.text.length;
if (count < MAXVALUE) {//MAZVALUE 是最大字数 _countLabel 显示字数
_countLabel.text = [NSString stringWithFormat:@"%lu/200",(unsigned long)count];
}else{
//通过字符串的剪切来得到不能输入超出字数限制的字符
self.textView.text = [self.textView.text substringToIndex:200];
_countLabel.text = [NSString stringWithFormat:@"200/200"];
}
feedContent = textView.text;}