iOS12出來也有一段時間了茫藏,上線項(xiàng)目遇到一個問題误趴,就是自動填充驗(yàn)證碼的時候霹琼,對應(yīng)的焦點(diǎn)textField不正確。
這是我們的界面凉当。
借用一個網(wǎng)圖枣申。。當(dāng)點(diǎn)擊紅圈按鈕的時候看杭,所有驗(yàn)證碼2868全部跑到了第一個textfield里面忠藤。
當(dāng)你有四個textfield作為接受驗(yàn)證碼的時候,其實(shí)很好解決楼雹。
首先新建一個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進(jìn)行變化值的監(jiān)聽贮缅,并且設(shè)置它的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)];
}
}
然后對收到的值進(jìn)行判斷處理。我們的驗(yàn)證碼為4位數(shù)的谴供,所以判斷了它的長度块茁。然后用for循環(huán)遍歷斤每一個驗(yàn)證碼的textfield里面。
這樣就完美實(shí)現(xiàn)了該功能桂肌!