博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UITextField银行卡加空格
阅读量:5139 次
发布时间:2019-06-13

本文共 1842 字,大约阅读时间需要 6 分钟。

 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    BOOL returnValue = YES;

    NSMutableString* newText = [NSMutableString stringWithCapacity:0];

    [newText appendString:textField.text];// 拿到原有text,根据下面判断可能给它添加" "(空格);

    

    NSString * noBlankStr = [textField.text stringByReplacingOccurrencesOfString:@" "withString:@""];

    NSInteger textLength = [noBlankStr length];

    

    

    if (string.length) {

        if (textLength < 25) {//这个25是控制实际字符串长度,比如银行卡号长度

            if (textLength > 0 && textLength %4 == 0 ) {

                newText = [NSMutableString stringWithString:[newText stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]];

                [newText appendString:@" "];

                [newText appendString:string];

                textField.text = newText;

                returnValue = NO;//为什么return NO?因为textField.text = newText;text已经被我们替换好了,那么就不需要系统帮我们添加了,如果你ruturnYES的话,你会发现会多出一个字符串

            }else {

                [newText appendString:string];

            }

        }else { // 比25长的话 return NO这样输入就无效了

            returnValue =NO;

        }

    }else { // 如果输入为空,该怎么地怎么地

        [newText replaceCharactersInRange:range withString:string];

    }

    

    return returnValue;

}

 

 银行卡去空格:

首先添加一个target方法 

[self.tf addTarget:self action:@selector(tfValueChange:) forControlEvents:UIControlEventEditingChanged];

 

- (void)tfValueChange:(id)sender {

//    NSString *str = [self.tf.text substringFromIndex:self.tf.text.length-2];

    if(self.tf.text.length<=4){

        return;

    }

    NSString *str = [self.tf.text substringFromIndex:self.tf.text.length-1];

    NSLog(@"%@",str);

    if([str isEqualToString:@" "] && str.length%4==1){

       

        NSMutableString* newText = [NSMutableString stringWithCapacity:0];

        [newText appendString:self.tf.text];// 拿到原有text,根据下面判断可能给它添加" "(空格);

        NSRange range = NSMakeRange(self.tf.text.length-1,1);

        [newText deleteCharactersInRange:range];

        self.tf.text =newText;

         NSLog(@"=======%@",newText);

    }

}

 

转载于:https://www.cnblogs.com/hualuoshuijia/p/6109122.html

你可能感兴趣的文章
解决ajax请求cors跨域问题
查看>>
《收获,不止Oracle》pdf
查看>>
LinkedList<E>源码分析
查看>>
Real-Time Rendering 笔记
查看>>
如何理解HTML结构的语义化
查看>>
Activity之间的跳转:
查看>>
实验四2
查看>>
Android现学现用第十一天
查看>>
多路复用
查看>>
Python数据可视化之Pygal(雷达图)
查看>>
Java学习笔记--字符串和文件IO
查看>>
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
SQL语法(3)
查看>>
在js在添版本号
查看>>
sublime3
查看>>
Exception Type: IntegrityError 数据完整性错误
查看>>
Nuget:Newtonsoft.Json
查看>>
【luogu4185】 [USACO18JAN]MooTube [并查集]
查看>>
手机号脱敏处理
查看>>
CI控制器调用内部方法并载入相应模板的做法
查看>>