原生键盘9键输入身份证格式的bug
随手记
有一个需求,账号输入框,仅可输入身份证格式(0-9和Xx),最长18位,不能限制键盘。没有第三方键盘,没有输入后校验,是在输入时候就限制输入。
用正则校验时,如图。
在全拼时候是没有问题的,但是在9键的情况,输入x时候,在进入iOS13新的代理方法【- (void)textFieldDidChangeSelection:(UITextField *)textField API_AVAILABLE(ios(13.0), tvos(13.0));】中时,会把最后一位变成x。即输入完123456,点击输入x时,输入框内容会变成12345x。个人认为目前属于ios13的bug。目前解决方案,将输入的方法全部改造。待后期优化。
同时需要注意的是,在限制输入位数时,比如说限制18位,在外界复制一个20位的字符串,进入输入框粘贴,再在键盘上三指左滑(键盘撤销操作),会导致崩溃,需要做特殊处理。