iOS12出来也有一段时间了,上线项目遇到一个问题,就是自动填充验证码的时候,对应的焦点textField不正确。
这是我们的界面。
借用一个网图。。当点击红圈按钮的时候,所有验证码2868全部跑到了第一个textfield里面。
当你有四个textfield作为接受验证码的时候,其实很好解决。
首先新建一个textfield,这里我用的是自己封装的textfield
@property(nonatomic,strong) XZTextField *quickTF;
然后在初始化方法里面声明。
if (@available(iOS 12.0, *)) {
self.quickTF = [[XZTextField alloc]init:15
mode:UITextFieldViewModeNever
place:nil
frame:CGRectZero];
self.quickTF.textContentType = UITextContentTypeOneTimeCode;
[self.quickTF addTarget:self action:@selector(quickInput) forControlEvents:UIControlEventEditingChanged];
}
对这个textfield进行变化值的监听,并且设置它的textContentType属性为UITextContentTypeOneTimeCode。
- (void)quickInput{
NSString *code = self.quickTF.text;
if (code.length != 4) {
return;
}
for (NSInteger idx = 0; idx < self.tfs.count; idx ++) {
XZTextField *tf = (XZTextField *)self.tfs[idx];
tf.text = [code substringWithRange:NSMakeRange(idx,1)];
}
}
然后对收到的值进行判断处理。我们的验证码为4位数的,所以判断了它的长度。然后用for循环遍历斤每一个验证码的textfield里面。
这样就完美实现了该功能!