【iOS】UITextField中关于粘贴Paste操作的一些小发现
测试跟我提了一个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操作的一些小发现相关推荐
- ios12彻底关闭siri_Siri正在iOS 12中获取自定义语音操作
ios12彻底关闭siri Siri is about to get a lot more powerful. Custom voice commands for any app will allow ...
- Putty中Vim无法粘贴paste的问题
Putty中Vim无法粘贴paste 笔者使用的是vim 8.0.707版本.发现在putty下面,以往通过复制其他地方的文本之后在putty登陆的Linux系统vim中无法像往常一样鼠标右键就粘贴, ...
- iOS开发中图片的一些处理操作(背景色,透明度,合成,大小)
之前写过一篇有关更换图片背景色的文章,今天遇到一块儿了,就干脆重新整理一下了.iOS开发中常用的对图片的处理操作: 一.更换图片的背景颜色 /** * 改变图片背景为白色 * * @param ima ...
- 在iOS 8中使用UIAlertController
本文转载至 http://www.cocoachina.com/ios/20141126/10320.html iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨 ...
- 浅谈iOS 开发中的界面通信
在任何的软件开发中都离不开界面与界面之间的通信,界面通信的最直接的方法就是界面传值. 在开发过程中我们在页面传值时我们通常使用的方法有:属性传值法,block传值法,代理传值法,以及单例传值法,通知传 ...
- iOS开发中键盘样式和自定义键盘。
文章目录 系统自带的样式 自定义键盘 在系统自带键盘基础上自定义键盘 完全自定义键盘 自定义全部类型键盘 系统自带的样式 在iOS开发中系统自带键盘已经有很多样式,但是有时候并不能满足我们都开发需求, ...
- java怎么实现复制粘贴的操作,java简单实现复制 粘贴 剪切功能代码分享
废话不多说,直接上代码,小伙伴们仔细看下注释吧. /*简单的复制 剪切 粘贴 功能 操作: 复制测试: 输入文本选择文本,点击复制,然后将光标放在右边的TextArea,点击粘贴 剪切测试:输入文本选 ...
- EXCEL中转置粘贴成值功能如何设置成热键或鼠标手势?
先说为何要转置粘贴值:转置粘贴就是行列方向转换,粘贴值就是避免公式因转置位置变换导致结果错误. 手动操作步骤 一两个数据还可以,但是经常这样操作的朋友,要多次操作的话,要这么点肯定很烦躁. VBA-- ...
- IOS开发中巧用Photoshop的通道功能
有时候在IOS开发中需要一些简单的.小的png图片时,便可以自己动手用Photoshop来做了(有时候UI设计师大大也不是那么情愿来给你做这些小东西啊!) 设置一张图片的颜色:可使用魔棒工具选中要改变 ...
最新文章
- textContent与innerText的不同(转发)
- 一个注解搞定 SpringBoot 接口防刷,还有谁不会?
- 【设计原则和建议】 构造和析构对象
- 创建一个水平盒子java_你了解如何比较两个对象吗
- 何佳文(帮别人名字作诗)
- winform 实现qq代理_会一百种引流方法,还不如会用一个QQ引流群控
- SQL9 查找除复旦大学的用户信息(数据库否定语句写法)
- C++程序内存泄漏都与哪些方面有关,该如何处理和避免
- python的power bi转换基础
- 【系统设计】统一过程的类抽取
- Spark源码分析之Master注册机制原理
- 有哪些指标可以描述两个图(graph)的相似度?
- Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决
- 静默授权获取unionid_Asp.Net Core 中IdentityServer4 授权中心之自定义授权
- ack过来服务器未响应,DHCP服务器问题:抓不到ACK包
- 你都用python来做什么-你都用Python来做什么?看看网友们的各种牛X操作
- php-5.6.2-Win32-VC11-x64.zip+ apache2.4.10 +php_xdebug-2.2.5-5.6-vc11-x86_64.dll+mysql5.6安装配置
- H265解码流程理解
- Comsol中引用matlab函数
- 世界时钟-国家中英文名称-国家代码-与北京的时差 一览
热门文章
- (二) Marlin-2.1.x 源码解析:步进电机S曲线加速
- java照明模型_在JAVA的异常处理模型中,能单独和finally语句一起使用的块是()。...
- python主循环方法mainloop_海龟图形Python,.mainloop()
- 计算机ps课如何把玫瑰花绿色,PhotoShop制作喷溅的玫瑰花朵效果的教程
- node连接数据库;webpack;token令牌的实现;CommonJs规范;websocket
- (附源码)SSM寻迹边境丹东旅游网站JAVA计算机毕业设计项目
- 【Calcite源码学习】ImmutableBitSet介绍
- python扫雷游戏实验分析_用python写扫雷游戏实例代码分享
- osg 三维gis开发_三维GIS与游戏引擎的跨界融合,打造数字化孪生的平行世界
- 陕西法院押送31辆涉案车回陕在山西被交警扣下