2019独角兽企业重金招聘Python工程师标准>>>

关于限制输入字数以前也做过,网上也很多方法。

但都不够完美,以前的测试人员也没千方百计的挑毛病,所以就糊弄过去了。

现在这个项目的测试人员为了找bug真是无所不用其极。。。。

1.一般方法就是通过UITextField的代理方法

#pragma mark - UITextFieldDelegate- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{if (textField == self.textFieldName) {if (string.length == 0) return YES;NSInteger existedLength = textField.text.length;NSInteger selectedLength = range.length;NSInteger replaceLength = string.length;if (existedLength - selectedLength + replaceLength > 20) {return NO;}}return YES;
}

but这个方法还是有bug的。。。这个方法很容易被中文的联想、粘贴等方式突破限制长度。

2.给UITextField加事件,然后在事件里截取至最大长度

[self.textFieldName addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];- (void)textFieldDidChange:(UITextField *)textField
{if (textField == self.textFieldName) {if (textField.text.length > 15) {textField.text = [textField.text substringToIndex:15];}}
}

你以为这样搞定了中文联想、粘贴的bug,就高枕无忧了吗。。。这方法还是有bug的,如果输入至还剩一个字符时,再输入Emoji呢?Emoji占2个字符,会被截得出现半个Emoji的情况,含半个Emoji的字符串在URL编码时会变为nil。

3.限制输入字数完美解决方案

其实就是在方案2上做了调整

- (void)textFieldDidChange:(UITextField *)textField
{if (textField == self.textFieldName) {if (textField.text.length > 15) {        UITextRange *markedRange = [textField markedTextRange];           if (markedRange) {              return;           }//Emoji占2个字符,如果是超出了半个Emoji,用15位置来截取会出现Emoji截为2半//超出最大长度的那个字符序列(Emoji算一个字符序列)的rangeNSRange range = [textField.text rangeOfComposedCharacterSequenceAtIndex:15];textField.text = [textField.text substringToIndex:range.location];}}
}

转载于:https://my.oschina.net/zhanglinfengzlf/blog/699205

iOS 限制输入字数完美解决方案相关推荐

  1. python限制输入字数_iOS 限制输入字数完美解决方案

    关于限制输入字数以前也做过,网上也很多方法. 但都不够完美,以前的测试人员也没千方百计的挑毛病,所以就糊弄过去了. 现在这个项目的测试人员为了找bug真是无所不用其极.... 1.一般方法就是通过UI ...

  2. IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)

    IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard .xib 混用.完美解决方案) 参考文章: (1)IOS APP 国际化 程序内切换语言实现 不重新启动系统 ...

  3. Cordova iOS WKWebView 整改完美解决方案

    Cordova iOS WKWebView 整改完美解决方案 前言说明:2020年3月之前已经上线的项目,可以继续使用UIWebView继续迭代版本,每次提交审核会收到苹果的警告邮件:2020年3月之 ...

  4. 在Prezi中输入简体中文的完美解决方案

    Prezi是一种在线制作演示文档(PPT)的工具,它与传统的Powerpoint或者Keynote的表现形式完全不同,被称为"powerpoint的颠覆者",在36Kr上曾经有过多 ...

  5. “IIS配置401错误”完美解决方案

    "IIS配置401错误"完美解决方案   1.错误号401.1 症状:HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝. 分析: 由于用户匿名访问使用的账号(默认是 ...

  6. linux关机_【linux】 不要再暴力关机了,讲讲我最近遇到的问题和完美解决方案...

    欢迎关注我的个人公众号:AI蜗牛车 前言 结束了每天的紧张的工作,这两天真的有些肝. 这两天打打字,突然感觉手指头疼起来了,想意识到成天打了十多个小时的键盘, 手指头都疲劳了= = 之后这两天基本上除 ...

  7. rewrite.php wordpress 缓存 固定连接,【转】Wordpress中文标签无法正常连接 - 完美解决方案...

    中文标签Wordpress无法正常连接 - 完美解决方案 WordPress中文标签链接打不开(显示错误 404 - 文件未找到)的解决方法 例如点击中文标签出现提示找不到文章的页面,上网上搜了一下解 ...

  8. 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)...

    限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事: (1)不同语言字符(英文.中文等)处理方式 (2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实 ...

  9. linux windows 域,linux加入windows域之完美解决方案

    <linux加入windows域之完美解决方案>由会员分享,可在线阅读,更多相关<linux加入windows域之完美解决方案(10页珍藏版)>请在人人文库网上搜索. 1.li ...

最新文章

  1. 用python做算法_自己用python写的螺旋矩阵生成算法
  2. 资源 | 一文读懂深度学习(附学习资源)
  3. 微信界面代码android,仿微信界面代码安卓版
  4. 理解Java中的hashCode 和 equals 方法
  5. python操作mysql事务提交_python连接mysql并提交mysql事务示例
  6. python获取原图GPS位置信息,轻松得到你的活动轨迹
  7. C语言经典编程题--哥德巴赫猜想 、完数 、猜数字等
  8. ibatis+Castle.MCV 版 NPetshop3
  9. sql常用语法命令及函数_SQL右连接命令:语法示例
  10. Unity3d发布web版无法连接数据库
  11. [摘抄]游戏主循环逻辑
  12. 在克隆环境上分离httpd和subversion。
  13. numpy.argmin 使用
  14. torch.nn.Conv2d详解
  15. gateway断言工厂Path,Weight
  16. java物流管理系统_基于java的物流管理系统
  17. kali启动后出现Resuming from hibernation错误
  18. win7/win10下KiWi Syslog服务器的安装与配置
  19. C盘根目录下只能创建文件夹不能新建文件的解决办法
  20. java around_Java逆向基础之AspectJ的Around方法修改方法体

热门文章

  1. 家庭中计算机应用包括,《管理信息系统中计算机应用》沟通考笔试B卷答案
  2. 被踢出sci_心痛啊!全世界历史最长的期刊,被踢出SCI了!
  3. 致力协同办公oa系统服务器设置,致力协同办公oa系统安装手册新.pdf
  4. 手动添加linux用户,Linux入门教程:如何手动创建一个Linux用户
  5. 哪一版可以打开pdg 安卓超星图书馆_南安:山区孩子有了数字图书馆
  6. slice 和 splice 区别
  7. T- SQL性能优化详解
  8. vue,一路走来(10)--生产环境
  9. 文本比较算法Ⅱ——Needleman/Wunsch算法
  10. 12864液晶驱动源码,独创中英文混合输出