一种导致UITextView输入中文却先输入拼音的解决思路
来源:互联网 发布:哪里有淘宝教学视频 编辑:程序博客网 时间:2024/06/08 11:20
原因分析:最近测试发现在某个页面的UITextView输入中文时,会显示输入错乱,如上图所示。语言问题,输入法等可能因素后,锁定了问题的所在: 为了实现字数限制 和禁止输入换行符,我在回调函数里写了如下的坑爹代码:
-(void)textViewDidChange:(UITextView *)textView
{
textView.text = [textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@""];
NSUInteger len = MIN([textView.text length],140);
textView.text = [textView.text substringToIndex:len];
countLabel.text = len>0?[NSString stringWithFormat:@"还可输入%d字",140-len]:@"最多50字";
countLabel.textColor = len<140?[UIColor colorWithWhite:0.5alpha:1]:[UIColor redColor];
}
textView.text = [textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@""];
textView.text = [textView.text substringToIndex:len];
每次改变值的时候都去截取一次字符串,导致了中文的输入问题。
参考解决方案:
- (void)textViewDidChange:(UITextView *)textView
{
//不输入换行
if ([textView.texthasSuffix:@"\n"])
{
NSMutableString * textViewStr = [NSMutableStringstringWithString:textView.text];
[textViewStr deleteCharactersInRange:NSMakeRange(textViewStr.length-1,1)];
textView.text = textViewStr;
}
if (textView.text.length >=51)
{
textView.text = _remarkText;
//切记:千万不可使用下面的语句否则,当字数到50字符后,无法弹出键盘重新编辑。
// textView.editable = NO;
return;
}
else
{
_remarkTextNumLab.textColor = [UIColorblackColor];
}
//不以空格开头
if ([textView.texthasPrefix:@" "])
{
NSMutableString * textViewStr = [NSMutableStringstringWithString:textView.text ];
[textViewStr deleteCharactersInRange:NSMakeRange(0,1)];
textView.text = textViewStr;
}
//不以三个空格结尾
if ([textView.texthasSuffix:@" "])
{
NSMutableString * textViewStr = [NSMutableStringstringWithString:textView.text];
[textViewStr deleteCharactersInRange:NSMakeRange(textViewStr.length-2,1)];
textView.text = textViewStr;
}
_remarkTextNumLab.text = [NSStringstringWithFormat:@"%ld/50",(long)(textView.text.length)];
if ( [_remarkTextNumLab.textisEqualToString:@"50/50"])
{
_remarkTextNumLab.textColor = [UIColorredColor];
}
else
{
_remarkTextNumLab.textColor = [UIColorblackColor];
}
_remarkText = textView.text;
}
多看多想多写,让随手优化代码,成为一种习惯。
- 一种导致UITextView输入中文却先输入拼音的解决思路
- 一种导致UITextView无法输入中文打出汉字的原因
- UITextFiled & UITextView 控制输入长度、中文处理以及UITextView 的placeHolder 的一种实现方法
- 解决iOS7上UITextField 或者 UITextView限制字数输入导致崩溃问题的方法
- ubuntu 下eclipse无法输入中文的解决思路
- 输入中文,返回拼音
- 使用UITextView或UITextField分类方法解决中文输入问题的bug
- 解决select2插件下拉搜索框,输入拼音能够匹配中文汉字的问题
- emacs中文输入的解决
- iOS UITextView 限制字数(解决了截断输入联想和对系统键盘中文不友好的问题)
- 限制UITextView的输入字数
- Android: 实现表情输入键盘的另外一种思路
- 中文和拼音自动转换的输入框
- Ubuntu下搜狗拼音突然无法输入中文的解决办法
- Java Swing文本框输入中文弹出输入窗口的解决
- Java Swing文本框输入中文弹出输入窗口的解决
- 一个文本框输入中文,另一个显示拼音
- 实时监听textField输入中文内容的时候拼音,拼音不跟着响应
- POJ 3070 Fibonacci (矩阵快速幂)
- 分享植物需水量预测模型(主成分分析、BP神经网络、加速遗传算法)
- postgres install
- centos、debian下安装开发者工具包
- cmake安装遇到问题总结
- 一种导致UITextView输入中文却先输入拼音的解决思路
- 解决oracle乱码问题
- 我的树洞
- UML总结(一)_THE END
- UIAlertController与 UIAlertView
- 硬币找钱问题2
- PHP PDO调用sqlsrv的存储过程
- Hadoop Shell命令
- C++ Primer书中第二章经常用到的Sales_data类