iOS 关于UITextView最大字符限制、字符统计、placeholder显示,UITextField 最大字符限制等问题

时间:2024-04-03 17:56:02

目前网上很多实现UITextView、UITextField最大字数限制与字数统计问题,用得要么不爽、要么写得不完整与实际需求不服,针对这一问题,本人在闲暇之余,专门针对最大字数限制与字数统计,写了一个demo,对此问题进行了分析,包括英文、中文、表情占不同字符的处理。

一、设置textView的placeHolder

思路:由于textView不像textField一样,可以系统设置placeHolder,所以只能自定义,目前采取比较简单的一种方法,即创建一个label,在textViewDidChange代理方法中,针对textView是否有值,来进行隐藏与显示,并设置其可以换行,以显示比较长的文字。

二、最大字数限制、字数统计问题

demo中实现了2个统计类型,普通统计与特殊统计,以达到目前app的需求

普通统计:无论是字母、空格还是汉字、表情,都占1字符

特殊统计:字母占0.5,英文空格占0.5,中文空格、汉字、表情占1字符

也可以根据不同需求,对不同类型占不同字符来进行拓展

三、代码分析

.h文件,

属性配置,就不一一描述了,demo中写得蛮清楚。

iOS 关于UITextView最大字符限制、字符统计、placeholder显示,UITextField 最大字符限制等问题

.m文件,核心代码

 

iOS 关于UITextView最大字符限制、字符统计、placeholder显示,UITextField 最大字符限制等问题

iOS 关于UITextView最大字符限制、字符统计、placeholder显示,UITextField 最大字符限制等问题

shouldChangeTextInRange方法中,没有高亮文字时,进行输入判断,当前文本已经超出了,就不能输入了

textViewDidChange方法中,没有高亮文字时,进行统计,最大输入文字之内,正常显示,超出之后,开始截取,这里没有直接用subString方法,因为不同类型占字符不同,所以采取while循环来进行裁减,每次减少最后一个字,直到符合最大字符之内。

四、demo地址

本人第一次写文章,写的不咋地,就直接附上demo地址吧

GitHub地址:XJInputLimitLength,对你有帮助的就点个赞吧