看到各种大神的帖子,小弟我一时手痒,正好前不久因为项目的需要,就弄了这么一个玩意,希望能帮助大家。
刚开始做这个的时候,发现一个问题,那就是我们在打字的时候,那些还在高亮的字母也会被算进进去,这就会造成我们一些困扰,情况如下。
针对这样的问题,小弟我在textView的代理方法中加了这么几句代码就解决问题了,下面话不多说,直接上代码,就是下面黑体加粗的部分,这样弄了之后。
- (void)textViewDidChange:(UITextView *)textView
{
if (textView.text.length>0) {
placeLabel.hidden = YES;
UITextRange *selectedRange = [textView markedTextRange];
//获取高亮部分
UITextPosition *pos = [textView positionFromPosition:selectedRange.start offset:0];
//如果在变化中是高亮部分在变,就不要计算字符了
if (selectedRange && pos) {
return;
}
NSUInteger count = textView.text.length
if (count>=200) {
wordNum.text = @"200/200";
textView.text = [textView.text substringToIndex:200];
ALERTSHOW_IN_CENTER(@"字数超过200上限了");
}else{
wordNum.text = [NSString stringWithFormat:@"%ld/200", (unsigned long)count];
}
}else{
placeLabel.hidden = NO;
wordNum.text = @"0/200";
}
}
效果如下图:
最后说几句,虽然这个功能很简单,但是却是很常见的一个问题,小弟第一次写这个,暂时就弄个简单的试试水,望大家多多谅解。
网友评论