textview进行编辑是中文后面接英文时,会自动换行,导致同一行显示不满。
解决方法如下:
- (void)textViewDidChange:(UITextView *)textView {
//防止输入时在中文后输入英文过长直接中文和英文换行
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
NSDictionary *attributes = @{
NSFontAttributeName:[UIFont systemFontOfSize:14],
NSParagraphStyleAttributeName:paragraphStyle
};
textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];
}
换行问题解决了,那么新的问题来了,系统中文键盘输入时,中文输入时拼音会先一步显示到文本(这里是我还没选择中文输入内容,拼音就乱入了)
解决方法还是放在textViewDidchange里面
///防止拼音输入时,文本直接获取拼音
UITextRange *selectedRange = [textView markedTextRange];
NSString * newText = [textView textInRange:selectedRange]; //获取高亮部分
if(newText.length>0)
{
return;
}
以上方法同样适用于TextField。