iOS-textField(銀行卡號輸入格式)

最近寫的項目有這個需求,看了別人寫的,打算自己寫一份備用

這是原文[http://blog.csdn.net/h3c4lenovo/article/details/8515304]

  • 第一步需要有一個textField,遵守協(xié)議,實現(xiàn)代理
    self.mytextfield.delegate = self;
    -然后需要實現(xiàn)的代理方法就是這個
    - (BOOL)textField:(UITextField )textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString )string{
    //判斷是否是當前輸入框
    if (self.mytextfield == textField) {
    NSString text = self.mytextfield.text;
    //限制字符 至于那個\b用在search中 寫不寫都行
    NSCharacterSet
    characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
    //去掉空格
    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
    //檢查除數(shù)字之外的字符 invertedSet:意思是取反,除了數(shù)字和退格的內(nèi)容
    if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
    return NO;
    }
    //拼接text 要輸入的部分+原有的
    text = [text stringByReplacingCharactersInRange:range withString:string];
    //去空格
    text = [text stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSString
    newString = @"";
    //四位添加空格
    while (text.length > 0) {
    NSString
    subString = [text substringToIndex:MIN(text.length, 4)];
    newString = [newString stringByAppendingString:subString];
    if (subString.length == 4) {
    newString = [newString stringByAppendingString:@" "];
    }
    text = [text substringFromIndex:MIN(text.length, 4)];
    }
    //去掉除數(shù)字部分
    newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
    // 限制長度
    if (newString.length >= 24) {
    return NO;
    }
    //賦值
    [self.mytextfield setText:newString];
    return NO;
    }
    return YES;
    }

基本就是這樣,注釋寫的很詳細了

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容