星空网 > 软件开发 > 操作系统

iOS对textField进行字符长度限制的办法

在项目开发过程中,遇到这么一个需求,编辑标签时,输入的最大长度需要限制为24个字节。

查阅了一些材料,并参考了之前项目的相关处理办法,今天在这里总结一下解决方案。

1.添加对UITextField的编辑变化事件的监听:

 

[self.textField addTarget:self action:@selector(textLengthChange:) forControlEvents:UIControlEventEditingChanged];

 

2.实现对应的action:

 

-(void)textLengthChange:(id)sender{  UITextField * textField=(UITextField*)sender;  NSString * temp = textField.text;    if (textField.markedTextRange ==nil)  {    while(1)    {      if ([temp lengthOfBytesUsingEncoding:NSUTF8StringEncoding] <= kMaxByteOfAlarmName) {        break;      }      else      {        temp = [temp substringToIndex:temp.length-1];      }    }    textField.text=temp;  }}

 

说明:如果内容超长,就干掉最后一个字,再判断是否超过限制长度,如此循环,直到满足长度限制要求。这里注意一下,直接使用length方法,返回的字符数,而不是字节数,lengthOfBytesUsingEncoding可返回指定字符编码的字节数。

另外,中文输入时,和平时英文输入会不太一样,中文输入会出现正在输入拼音,还没有选汉字,拼音已经上去了:

iOS对textField进行字符长度限制的办法images/loading.gif' data-original="http://images2015.cnblogs.com/blog/997254/201607/997254-20160723160641029-472177576.jpg" width="251" height="447" />

这时,拼音本身占的字节可能大于选字后的汉字所占的字节,例如输入zhong,占5个字节,而如果用户选择“中”,只占三个字节。如果不专门考虑这种情况,就会出现明明还可以再输一个中文汉字,但是输入拼音的时候没法完成zhong的拼音输入。所以需要判断当时textField是否有已选中的内容。

3.针对步骤2中的图,如果在出现图中的状态下直接保存,那么textfiled会把未转换为汉字的拼音也一起保存进去。所以还需要在使用textfield的内容前再进行一下处理,把超出的部分删除:

 

-(void)repairTextField{  NSString * temp = self.textField.text;  while(1)  {    if ([temp lengthOfBytesUsingEncoding:NSUTF8StringEncoding] <= kMaxByteOfAlarmName) {      break;    }    else    {      temp = [temp substringToIndex:temp.length-1];    }  }  self.textField.text=temp;}

 

Done。如果有什么问题,欢迎留言指出,一起讨论。

 

补充点东西:

为什么不用UITextField的代理方法shouldChangeCharactersInRange?

目前看来,此方法无法捕捉粘贴、拼音转汉字和联想(例如使用拼音输“中国”后,直接再键盘的候选词中可以选“万岁”)输入导致的变化。

 

 

 

 




原标题:iOS对textField进行字符长度限制的办法

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

揭秘那些你不知道的亚马逊Q&A精细化布局:https://www.ikjzd.com/articles/121373
Lazada新商家入驻常见问题解答:https://www.ikjzd.com/articles/121374
重口味?这类商品亚马逊商机巨大!:https://www.ikjzd.com/articles/121375
解读 | 出口医疗物资如何享受境外关税优惠:https://www.ikjzd.com/articles/121377
亚马逊新手卖家必须掌握的FBA发货知识!:https://www.ikjzd.com/articles/121378
美国邮政面临破产危机配送中断,亚马逊大动作支持美国邮政援助计划!:https://www.ikjzd.com/articles/121380
大批Listing被下架,“黄色警告”!提示存在停用风险:https://www.kjdsnews.com/a/1836647.html
跨境支付百科——巴西支付篇:https://www.kjdsnews.com/a/1836648.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流