银行卡号的格式显示和获取数据

Posted iOS的美丽岁月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了银行卡号的格式显示和获取数据相关的知识,希望对你有一定的参考价值。

情景:

在App的开发中,有绑卡功能的都少不了输入您的银行卡号进行绑卡。为了适应广大用户的视觉习惯,在银行卡的显示是每四位空一格。本博客就是要解决这个问题!


一 、创建流程

1》 我们选择 UITextField 做我们的底层控件,并创建继承UITextField的类BankCardTextField

2》 我们要重写 UITextFieldDelegate 的 textField:shouldChangeCharactersInRange:replacementString:方法。

3》 重新获取我们输入的银行卡号(去除空格)。


二 、代理方法的重写

#pragma mark 控制银行的输入和清除
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    // 处理解决银行卡账号空格删除,如果不处理不能执行删除。对空格的检测,如下:
    if (string.length == 0) 
        return YES;
    
    // 创建一个对象,标记是否添加空格
    NSInteger length = 0 ;
    length = textField.text.length ;
    // 判断是否含有空格。需要注意下面方法有版本限制,containsString 要在 8.0 版本以上使用。
    if ([textField.text containsString:@" "]) 
        // 获取输入对象的最后一组对象
        NSString * lastObject = [textField.text componentsSeparatedByString:@" "].lastObject ;
        // 获取现有的长度
        length = lastObject.length ;
    
    // 判断是否超过4位,超过添加空格
    if (length==4) 
        textField.text = [NSString stringWithFormat:@"%@ ",textField.text];
    
    return  YES;

思路: 1、注意输入空格后,在清除的时候空格删除不了。解决方法是判断空格,返回YES。2、我们首先检测显示的是否含有空格,如果含有,空格最后的是否满足4位,如果满足再次添加空格,否则直接返回YES。


三 、 获取输入的银行卡号,清除空格

#pragma mark 获取输入的数据,处理空格
-(NSString*)bankCardNumberText 
    NSMutableString * string = [NSMutableString string] ;
    for (NSString * tempStr in [self.text componentsSeparatedByString:@" "]) 
        [string appendString:tempStr];
    
    return string ;



四 、 BankCardTextField 类的初始化。

-(instancetype)initWithFrame:(CGRect)frame 
    if (self = [super initWithFrame:frame]) 
        self.delegate = self;
        // 设置键盘
        self.keyboardType = UIKeyboardTypeNumberPad ;
    
    return self ;


#pragma mark Xib / Nib / Storyboard 创建对象
-(instancetype)initWithCoder:(NSCoder *)aDecoder 
    if (self == [super initWithCoder:aDecoder]) 
        self.delegate = self ;
        // 设置键盘
        self.keyboardType = UIKeyboardTypeNumberPad ;
    
    return  self ;



五 、 BankCardTextField 的调用    


BankCardField = [[BankCardTextField alloc]initWithFrame:CGRectMake(0, 100, 200, 40)];
BankCardField.center = CGPointMake(self.view.center.x, BankCardField.center.y);
BankCardField.placeholder = @"请输入您的银行卡号";
BankCardField.textColor = [UIColor redColor];
BankCardField.layer.borderColor = [UIColor greenColor].CGColor;
BankCardField.layer.borderWidth = 1.0 ;
[self.view addSubview:BankCardField];

六 、效果展示










以上是关于银行卡号的格式显示和获取数据的主要内容,如果未能解决你的问题,请参考以下文章

为啥在EXCEL表格中输入银行卡账号最后3位只显示0呢

输入框内格式化金额银行卡号

判断银行卡号格式是否正确

JS input 银行卡号格式转换

excel表格内输入19位银行卡号,为啥后四位总是变成0?

如何将银行卡号中的空格去掉,而且保证不出现下面的情况或者后几位变为0的情况???急!!!!