需求
require:
项目里经常有一种需求,需要限制用户输入的字数,但是有的PM为了更好的用户体验,允许用户在没有确认前可以无限输入optional:
1.不允许输入emoji表情
2.不允许输入空格等
效果
分析
有几种场景
1.各种输入法
2.输入非法字符
3.输入的中文拼音还没选文字就点确定了
4.你们补充下…
实现
创建一个弹框,监听输入
|
|
记得遵守协议
1 <UIAlertViewDelegate,UITextFieldDelegate>ViewController ()给定一个限制数
1
过滤非法文字
因为咱们要过滤非法字符嘛,那么先把方法准备好,一会儿直接调就好啦
|
|
获取输入文字
这一步我们需要实时获取用户输入的文字,并且交给一个专门的检验方法来检验
|
|
检验文字内容
检验之前先去掉空格等非法字符吧,调用之前准备好的方法,一步到位过滤完全
1 NSString *toBeString = [self disable_Text:textField ];咱们是不是直接截断就可以了?
12 NSString *strNew = [NSString stringWithString:toBeString];[textField setText:[strNew substringToIndex:kMaxLableLength]];项目经理会打死你的…..因为还有各种小细节需要处理呢
咱们需要判断输入法,英文的直接截断就好啦,中文的咱们要允许他在有光标光亮的状态下可以无限输入文字
完整代码如下
|
|
完
大功告成!测试下,恩,OK~
小明:拿给PM秀一下~顺便问问TA晚上约不约~
PM:秀你妹啊!
PM:完个蛋啊!
PM:有bug!
PM:用户直接点确认怎么办!!!
PM:用户体验!用户体验!用户体验!重说三小明:😭😭😭😭
改bug
是呀,用户在光标状态下,直接输入一大堆光标咱们是不限制,如果他直接点确认,光标内容也是会被记录的~
还有个小细节:如果用户一进来,什么都不输入直接点确认~咱们要拦截这个操作~(PM如果有需求的话)
fix it!
|
|
完
小明终于可以约PM了~
PS:话说2个大老爷们约啥约~小明的世界我不懂~
PS:第一次做分享,怎么才能装作经常做的样子,😭😭😭😭😭
原创文章,转载请注明地址: https://kevinmky.github.io