概述
在开发的时候大家有时候会遇见这样的问题:在使用UITextField或UITextView实时实时计算content的长度的时候会出现一些偏差,如何准确的去计算统计这些字符呢?
可以发现UITextField或UITextView输入文字的时候输入的文字会有两个状态——选中与未选中。在实时计算长度的时候肯定计算的是选中后的text,那如何区分这个状态呢?这是就用到了markedTextRange。
在做输入中文的时候,系统自带的键盘不可避免的会产生上图的问题,本文就主要解决边输入边重新赋值时,中文输入时的高亮会被当做文本的小bug。
UITextRange *selectedRange = [textView markedTextRange];
NSString * newText = [textView textInRange:selectedRange]; //获取高亮部分
if(newText.length>0)
{
return;
}
例:textView
- (void)textViewDidChange:(UITextView *)textView
{
UITextRange *selectedRange = [textView markedTextRange];
NSString * newText = [textView textInRange:selectedRange]; //获取高亮部分
if(newText.length>0)
{
return;
}
//给textView重新赋值(转化为富文本之类)
、、、、
}
例:textField
[self.textField addTarget:self action:@selector(textDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textDidChange:(UITextField *)textField
{
UITextRange *selectedRange = [textField markedTextRange];
NSString * newText = [textField textInRange:selectedRange];
//获取高亮部分
if(newText.length > 0)
{
return;
}
//给textView重新赋值(转化为富文本之类)
、、、、
}
最后
以上就是谦让嚓茶为你收集整理的markedTextRange理解及使用 计算长度解决中文输入时拼音会显示到文本的问题的全部内容,希望文章能够帮你解决markedTextRange理解及使用 计算长度解决中文输入时拼音会显示到文本的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复