测试跟我提了一个BUG

怎么这个文本输入框粘贴一次就可以,再粘贴一次就没有效果了呢?

赶紧Review代码

前提是这样的:

UITextField肯定重写了textField:shouldChangeCharactersInRange:replacementString:。里面对string做了英文字母+数字的过滤处理

NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"...."] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
if([string isEqualToString:filtered] == NO) {return NO;
}

省略号里面就是英文字母+数字的一个字符串。如果输入的string中包含字符串以外的字符,输入就会失败。

问题是这样的:

打断点,第一次粘贴时传进来的string没有问题(这里假设是@"abcdef"),第二次粘贴时传进来的string有了问题,在原先字符串前面多了一个空格,变成@" abcdef"。

这就是问题所在了,因为多的这个空格,所以输入通过不了上文所说的验证,输入失败。

现象是这样的:

经过一定的实验,这个现象推而广之应该这样描述:

前提条件:1.粘贴操作,粘贴内容不限;2.输入法是支持中文的输入法(可以切换成中文输入法);3.UITextField输入框不为空

触发条件:两种条件相互独立,即可以同时触发

条件一 粘贴的位置前面称为前文,前文是英文输入法字符(比如@".")的情况下

条件二 粘贴的位置后面称为后文,后文是英文输入法字符(比如@".")的情况下

触发现象:条件一触发时,string会在头部自动加上空格。条件二触发时,string会在尾部自动加上空格。

处理是这样的:

和测试沟通,最终对输入这里的文本进行一刀切处理,即统一把空格移除再显示。比如@"sdf uio"粘贴后会显示为@"sdfuio"

这样处理的原因是因为暂时没有想到方法区分粘贴string中的空格究竟是本身具有的还是粘贴时系统附加的


如有错漏 欢迎指正

【iOS】UITextField中关于粘贴Paste操作的一些小发现相关推荐

  1. ios12彻底关闭siri_Siri正在iOS 12中获取自定义语音操作

    ios12彻底关闭siri Siri is about to get a lot more powerful. Custom voice commands for any app will allow ...

  2. Putty中Vim无法粘贴paste的问题

    Putty中Vim无法粘贴paste 笔者使用的是vim 8.0.707版本.发现在putty下面,以往通过复制其他地方的文本之后在putty登陆的Linux系统vim中无法像往常一样鼠标右键就粘贴, ...

  3. iOS开发中图片的一些处理操作(背景色,透明度,合成,大小)

    之前写过一篇有关更换图片背景色的文章,今天遇到一块儿了,就干脆重新整理一下了.iOS开发中常用的对图片的处理操作: 一.更换图片的背景颜色 /** * 改变图片背景为白色 * * @param ima ...

  4. 在iOS 8中使用UIAlertController

    本文转载至 http://www.cocoachina.com/ios/20141126/10320.html iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨 ...

  5. 浅谈iOS 开发中的界面通信

    在任何的软件开发中都离不开界面与界面之间的通信,界面通信的最直接的方法就是界面传值. 在开发过程中我们在页面传值时我们通常使用的方法有:属性传值法,block传值法,代理传值法,以及单例传值法,通知传 ...

  6. iOS开发中键盘样式和自定义键盘。

    文章目录 系统自带的样式 自定义键盘 在系统自带键盘基础上自定义键盘 完全自定义键盘 自定义全部类型键盘 系统自带的样式 在iOS开发中系统自带键盘已经有很多样式,但是有时候并不能满足我们都开发需求, ...

  7. java怎么实现复制粘贴的操作,java简单实现复制 粘贴 剪切功能代码分享

    废话不多说,直接上代码,小伙伴们仔细看下注释吧. /*简单的复制 剪切 粘贴 功能 操作: 复制测试: 输入文本选择文本,点击复制,然后将光标放在右边的TextArea,点击粘贴 剪切测试:输入文本选 ...

  8. EXCEL中转置粘贴成值功能如何设置成热键或鼠标手势?

    先说为何要转置粘贴值:转置粘贴就是行列方向转换,粘贴值就是避免公式因转置位置变换导致结果错误. 手动操作步骤 一两个数据还可以,但是经常这样操作的朋友,要多次操作的话,要这么点肯定很烦躁. VBA-- ...

  9. IOS开发中巧用Photoshop的通道功能

    有时候在IOS开发中需要一些简单的.小的png图片时,便可以自己动手用Photoshop来做了(有时候UI设计师大大也不是那么情愿来给你做这些小东西啊!) 设置一张图片的颜色:可使用魔棒工具选中要改变 ...

最新文章

  1. textContent与innerText的不同(转发)
  2. 一个注解搞定 SpringBoot 接口防刷,还有谁不会?
  3. 【设计原则和建议】 构造和析构对象
  4. 创建一个水平盒子java_你了解如何比较两个对象吗
  5. 何佳文(帮别人名字作诗)
  6. winform 实现qq代理_会一百种引流方法,还不如会用一个QQ引流群控
  7. SQL9 查找除复旦大学的用户信息(数据库否定语句写法)
  8. C++程序内存泄漏都与哪些方面有关,该如何处理和避免
  9. python的power bi转换基础
  10. 【系统设计】统一过程的类抽取
  11. Spark源码分析之Master注册机制原理
  12. 有哪些指标可以描述两个图(graph)的相似度?
  13. Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决
  14. 静默授权获取unionid_Asp.Net Core 中IdentityServer4 授权中心之自定义授权
  15. ack过来服务器未响应,DHCP服务器问题:抓不到ACK包
  16. 你都用python来做什么-你都用Python来做什么?看看网友们的各种牛X操作
  17. php-5.6.2-Win32-VC11-x64.zip+ apache2.4.10 +php_xdebug-2.2.5-5.6-vc11-x86_64.dll+mysql5.6安装配置
  18. H265解码流程理解
  19. Comsol中引用matlab函数
  20. 世界时钟-国家中英文名称-国家代码-与北京的时差 一览

热门文章

  1. (二) Marlin-2.1.x 源码解析:步进电机S曲线加速
  2. java照明模型_在JAVA的异常处理模型中,能单独和finally语句一起使用的块是()。...
  3. python主循环方法mainloop_海龟图形Python,.mainloop()
  4. 计算机ps课如何把玫瑰花绿色,PhotoShop制作喷溅的玫瑰花朵效果的教程
  5. node连接数据库;webpack;token令牌的实现;CommonJs规范;websocket
  6. (附源码)SSM寻迹边境丹东旅游网站JAVA计算机毕业设计项目
  7. 【Calcite源码学习】ImmutableBitSet介绍
  8. python扫雷游戏实验分析_用python写扫雷游戏实例代码分享
  9. osg 三维gis开发_三维GIS与游戏引擎的跨界融合,打造数字化孪生的平行世界
  10. 陕西法院押送31辆涉案车回陕在山西被交警扣下