现在的服务器一般是不会对字数做限制了,但是遇到一个需求需要对字数做限制,并且同时更新剩余的字数,刚开始我以为这个是非常简单的,然而这是个巨坑
这里一开始是使用代理方法监听字数的,然而这个方法当达到最大值200以后,虽然在英文状态下无法输入,但是在拼音联想状态下却依然会计算字数,并且由于拼音和拼音间存在空格,所以在高亮状态下也无法正常计算。
所以这里就采用了通知,这里计算还是比较准的,而且会出现一个-1的字数bug显示,但是真实的情况下是正常的,所以可以在字数达到限制后对提示字符进行写死限制,代码如下:
-(void)textChange:(NSNotification *)note{
static const NSInteger Max_Num_TextView = 200;
self.isContentTextViewEnable = true;
//获取当前键盘类型
UITextInputMode *mode = (UITextInputMode *)[UITextInputMode activeInputModes][0];
//获取当前键盘语言
NSString *lang = mode.primaryLanguage;
//如果语言是汉语(拼音)
if ([lang isEqualToString:@"zh-Hans"])
{
//取到高亮部分范围
UITextRange *selectedRange = [self.contentTextView markedTextRange];
//取到高亮部分
<