目前网上很多实现UITextView、UITextField最大字数限制与字数统计问题,用得要么不爽、要么写得不完整与实际需求不服,针对这一问题,本人在闲暇之余,专门针对最大字数限制与字数统计,写了一个demo,对此问题进行了分析,包括英文、中文、表情占不同字符的处理。
一、设置textView的placeHolder
思路:由于textView不像textField一样,可以系统设置placeHolder,所以只能自定义,目前采取比较简单的一种方法,即创建一个label,在textViewDidChange代理方法中,针对textView是否有值,来进行隐藏与显示,并设置其可以换行,以显示比较长的文字。
二、最大字数限制、字数统计问题
demo中实现了2个统计类型,普通统计与特殊统计,以达到目前app的需求
普通统计:无论是字母、空格还是汉字、表情,都占1字符
特殊统计:字母占0.5,英文空格占0.5,中文空格、汉字、表情占1字符
也可以根据不同需求,对不同类型占不同字符来进行拓展
三、代码分析
.h文件,
属性配置,就不一一描述了,demo中写得蛮清楚。
.m文件,核心代码
shouldChangeTextInRange方法中,没有高亮文字时,进行输入判断,当前文本已经超出了,就不能输入了
textViewDidChange方法中,没有高亮文字时,进行统计,最大输入文字之内,正常显示,超出之后,开始截取,这里没有直接用subString方法,因为不同类型占字符不同,所以采取while循环来进行裁减,每次减少最后一个字,直到符合最大字符之内。
四、demo地址
本人第一次写文章,写的不咋地,就直接附上demo地址吧
GitHub地址:XJInputLimitLength,对你有帮助的就点个赞吧