在写代码的过程中,很多时候都是重复性的写一些东西,比如手机号输入框!
每个app的登录注册现在基本上都是使用手机号了.手机号输入框用的也就比较多了.
有的时候产品没有特殊要求的时候,我相信大多数程序员是直接放个textfield限制手机号位数就不管了.但是很多时候产品要求吧手机号里面添加空格或者添加星号或者小点.
有这些要求的时候,程序员当让是满足产品需求,但是在处理起来的时候就会相对耗时一点,必经没有直接限制位数处理起来快.
为了不再重复的复制粘贴修修改改,今天把textfield组件化一下,,以后可以直接使用;
写代码之前先想一下需要做什么?(需要一个输入手机号的输入框,在输入的手机号中间使用空格隔开)
1.需要创建一个直接继承UITextField的phoneField类
2.初始化基础设置
3.监听输入框输入事件
4.监听到输入事件的时候,处理输入内容
代码实现一下:
1.需要创建一个直接继承UITextField的phoneField类(我绝对会这一步的操作,所以不用详细说明)
2.初始化基础设置

3.监听输入框输入事件:[self addTarget:self action:@selector(textFieldDidEditing:) forControlEvents:UIControlEventEditingChanged];这一步直接在(2)中设置了
4监听到输入事件的时候,处理输入内容:
(1)这一步我需要一个数字记录当前输入内容的长度,NSInteger i(初始化i=0,,,,,,,,因为刚开始的时候是没有输入内容的,默认为0);
(2)每次输入删除操作的时候和记录的当前内容长度比较也就是在监听方法里面处理

先处理输入:

然后处理删除:

(ps:怎么判断的是输入还是删除呢?,,,,,,首先明白一点 我们监听的事件是UIControlEventEditingChanged,,,也就是在输入框光标改变以后的事件,要吗是输入改变的光标,要吗是删除改变的,,,,,,,,然后我们初始化了记录输入框内容长度的数值:i,每次输入以后记录i ….. textField.text.length > i 的时候 表示当前操作是在输入,textField.text.length < i的时候,表示在删除 )
到此这个手机号输入框就算是完成了,
接下来就是使用:导入#import “PhoneField.h” 创建 加载 完后
附上demo地址:https://github.com/abner009007/PhoneFieldOC.git
swift版本:https://github.com/abner009007/PickerViewSwift.git
网友评论