美文网首页iOS学习开发
iOS12自动填充验证码 避免textField的UIContr

iOS12自动填充验证码 避免textField的UIContr

作者: 其实你懂De | 来源:发表于2019-10-23 15:21 被阅读0次

iOS12新增一个功能就是可以自动填充验证码,当你点击键盘上面的验证码时,如果这时你也写了UIControlEventEditingChanged,那么这时你会走两次相同的回调。
如果你是直接返回一般没问题,如果你需监听验证码输入正确过后自动跳下一个界面,那么就会连续跳两个界面!!!

项目中的验证码页面是这样的:


验证码页面.jpeg

验证码自动填充后自动跳到第二个页面,但是由于自己也写了UIControlEventEditingChanged,这个方法会走两次,如果不自动填充,手动填写就没得问题喽!于是想办法想禁用掉这个自动填充,但是这个体验对用户并不友好了,好像也禁用不了....还是在UIControlEventEditingChanged这个方法的做文章吧,这是根源,只让他走一次方法就好了。直接上代码:

- (void)tfEditingChanged:(UITextField *)textField
{
  UITextRange *selectedRange = textField.markedTextRange;//获取高亮部分
  
     if (selectedRange == nil || selectedRange.empty) {
         // 自定义请求
       if (textField.text.length > self.itemCount) {
              textField.text = [textField.text substringWithRange:NSMakeRange(0, self.itemCount)];
          }
          
          for (int i = 0; i < self.itemCount; i++)
          {
              UILabel *label = [self.labels objectAtIndex:i];
              
              if (i < textField.text.length) {
                  label.text = [textField.text substringWithRange:NSMakeRange(i, 1)];
              } else {
                  label.text = nil;
              }
          }
          
          
          // 输入完毕后,自动隐藏键盘
          if (textField.text.length >= self.itemCount) {
              [textField resignFirstResponder];
              if (self.handleCode) {
                  self.handleCode(self.code);
              }
            
          }
     }
     else
     {
  
         return;
     }
  

 
}

有些代码可以省略,主要是自定义请求写上你自己的方法就好了。说实话,这自动填充对于这种登录流程给开发者造成一丁点的困扰,不过找到解决方法毕竟是好的结果。希望也对别人有所帮助吧。

相关文章

网友评论

    本文标题:iOS12自动填充验证码 避免textField的UIContr

    本文链接:https://www.haomeiwen.com/subject/zjrkvctx.html