1. 程式人生 > >銀行卡號的格式顯示和獲取資料

銀行卡號的格式顯示和獲取資料

情景:

在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];

六 、效果展示