网上看到很多关于这个问题的解决方法,大部分都试过,不怎么管用,偶然一个机会,尝试了下面的方法设置,很完美的解决了这个bug,希望能帮到大家,方法代码如下:
#pragma mark - UITextViewDelegate
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if (text == 0) {
return YES;
} else {
if ([text isEqualToString:@""] && range.length > 0) {
//删除字符肯定是安全的
return YES;
} else {
if (textView.text.length - range.length + text.length > 30) {
return NO;
} else {
return YES;
}
}
}
}
- (void)textViewDidChange:(UITextView *)textView
{
NSString * reasonStr = textView.text;
if (reasonStr.length >= 30) {
// 30字之后不能再输入
textView.text = [reasonStr substringToIndex:29];
}else{
}
}
ps:上述代码实现的是限制30个字以内。同时也解决了如果一次输入超过字数后的删除会出现删除不了的问题,上面代码的 //删除字符肯定是安全的 可以有效解决这个问题。