美文网首页
iOS-验证码显示在左边问题

iOS-验证码显示在左边问题

作者: 翀鹰精灵 | 来源:发表于2022-03-02 19:02 被阅读0次

    项目中有个短信验证码功能,测出来有个验证码靠左的bug,如下图所示:

    image.png

    看到问题首先度娘,结果只发现如下两条回答。
    https://tieba.baidu.com/p/7254829838
    https://bbs.hupu.com/38043101.html

    实际上并没有什么用,这个时候就在想是不是封装的这个输入框有问题,解决思路如下:

    1. 首先用系统的UITextField输入框替换项目中封装的输入框,替换代码如下所示:[核心代码];
    -(UITextField *)verifyV {
        if (!_verifyV) {
            _verifyV = [[UITextField alloc]init];
            _verifyV.backgroundColor = [UIColor cyanColor];
            _verifyV.placeholder = "请输入验证码";
            _verifyV.delegate = self;
            _verifyV.textContentType = UITextContentTypeOneTimeCode;
            _verifyV.keyboardType = UIKeyboardTypeASCIICapableNumberPad;
        }
        return  _verifyV;
    }
    

    运行之后,效果如下动图所示:

    偏左bug.gif

    替换为项目的输入框之后,发现依旧有偏左的问题,此时基本可以验证我们封装的输入框没有太大问题,应该还是输入框的某些属性造成的,于是对写的这backgroundColorplaceholderdelegatetextContentTypekeyboardType这五个属性进行逐步排查,首先排除了backgroundColorplaceholderdelegatetextContentType四个属性,发现有无均存在问题,那么此时可以断定问题肯定存在keyboardType属性上面了。

    2.排查keyboardType属性

    扎一看keyboardType属性也没有什么问题,那么我换个枚举值试试吧,此时我把属性

     _verifyV.keyboardType = UIKeyboardTypeASCIICapableNumberPad;
    

    换成我们常用的数字键盘

    _verifyV.keyboardType = UIKeyboardTypeNumberPad;
    

    再次测试,发现居然是没有偏左的问题,那么把项目中涉及到UIKeyboardTypeASCIICapableNumberPad属性的统一替换掉,再次跑项目,发现居然是正常了。效果如下所示:

    正常效果.gif
    小结:
    image.png image.png

    虽然问题得以解决,但是我查阅各方资料,包括官方文档,就没有说 UIKeyboardTypeASCIICapableNumberPad属性会造成验证码偏左问题,不知道是不是苹果bug,希望有看到类似的资料留言祝我解惑。

    相关文章

      网友评论

          本文标题:iOS-验证码显示在左边问题

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