Skip to content

textField中输入身份证号,手机号,银行卡号时每隔几位需要添加空格。当输入错误时需要从末尾或者中间删除,删除之后还要保持当前textfield的中内容保持每隔几位就有一个空格的格式。这个分类主要是为了解决这个问题

JiWuChao/TextField

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 

Repository files navigation

TextField + NumberFormat

TextField中输入身份证号,手机号,银行卡号时每隔几位需要添加空格。当输入错误时需要从末尾或者中间删除,删除之后还要保持当前textfield的中内容保持每隔几位就有一个空格的格式。这个分类主要是为了解决这个问题

(补2018年09月11日)使用条件

  • 目前还不支持动态的改变格式。�即在输入之前是@[@2,@5],输入几个数字之后改变为@[@3,@6]
  • 不支持粘贴。当初在设计这个分类的时候,考虑到这种格式化的场景不太适合粘贴。因为粘贴的话不能保证用户粘贴过来的就是数字,可能是其他乱码,需要对粘贴过来的内容做过滤。当时嫌太麻烦也没太大必要就没做。不知道使用的小伙伴这种需求大不大,如果这种场景的使用比较多的话,最近比较忙,后期补上这种场景的处理

API介绍

textField中输入的空格格式化
 @param textField  
 @param range  
 @param string  
 @param blankLocation 要加的空格的位置 比如手机号11 位 如果需要 344的显示格式 空格位置就是 @[@4,@9]
                      身份证号最大 18位 684格式 空格位置 位@[@6,@15]
                      银行卡号最大 24 空格位置 @[@4,@9,@14,@19,@24] 不同的账号显示格式可以自定义
 @param limitCount 限制的长度 超过此限制长度 则不能输入 如果输入的为0 则不限制输入的长度
 @return textField中输入的身份证号 ,手机号,银行卡号 有需要在中间加入空格的需求 此扩展就是为了解决这类问题的
 
 */
+ (BOOL)inputTextField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
     replacementString:(NSString *)string
        blankLocations:(NSArray <NSNumber *>*)blankLocation
            limitCount:(NSInteger )limitCount;
            

使用方法

  • 只需一行代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    // 在textField的代理方法中调用这一句方法
    // 设置好要展示的格式 即 空格的位置blankLocations 
    // 如果limitCount 为0 表示不显示输入的长度大小
    return [UITextField inputTextField:textField
         shouldChangeCharactersInRange:range
                     replacementString:string
                        blankLocations:@[@4,@9,@14,@19,@24]
                            limitCount:24];
    
}


原理讲解

具体实现原理在这 我是 blog 点我

效果图

image

About

textField中输入身份证号,手机号,银行卡号时每隔几位需要添加空格。当输入错误时需要从末尾或者中间删除,删除之后还要保持当前textfield的中内容保持每隔几位就有一个空格的格式。这个分类主要是为了解决这个问题

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published