- (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);

}

}

uitextfield银行卡加空格的更多相关文章

  1. ios 去除UITextField中的空格

    NSString *qName =[userNameText.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNew ...

  2. iOS----------输入框UITextField禁止输入空格

    方法一:添加代理 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range rep ...

  3. 输入框UITextField禁止输入空格方法

    方法一:添加代理 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range rep ...

  4. UITextField常用属性归纳:文本框样式、文字样式、键盘样式、左右视图样式、清除按钮设置等

    (1)可以根据需要设置文本框的样式(包括形状.边框颜色.背景等). (2)可以根据需要设置文字显示样式(包括输入密码时的密文显示.文字横向居中.纵向居中上下.输入的文字是否首席木大写.文字超过后是否缩 ...

  5. UITextField使用详解

    转iOS中UITextField使用详解 (1) //初始化textfield并设置位置及大小   UITextField *text = [[UITextField alloc]initWithFr ...

  6. 你真的了解UITextField吗?

    一:首先查看一下关于UITextField的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField : UIControl <UITextIn ...

  7. UI第三节—— UITextField详解

    戏言:UITextField对于需要登陆注册的界面的作用还是相当明显,但是对于键盘过的遮挡问题,可是重点哦!这里就涉及到通知(NSNotificationCenter)的内容. //注册事件 [[NS ...

  8. iOS开发之--UITextField属性

    UITextField属性 0.     enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. ...

  9. UITextField属性

    0.      enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. 1.borderStyl ...

随机推荐

  1. java中的volatile关键字

    java中的volatile关键字 一个变量被声明为volatile类型,表示这个变量可能随时被其他线程改变,所以不能把它cache到线程内存(如寄存器)中. 一般情况下volatile不能代替syn ...

  2. 从MSSQL server 2005中移植数据到Oracle 10g

    body, p, th, td, li, ul, ol, h1, h2, h3, h4, h5, h6, pre { font-family: simsun; line-height: 1.4; } ...

  3. Linux CPU affinity

    在Linux中,我们知道可以通过nice.renice命令改变进程的执行优先级,优先级高的进程优先执行,从而一定程度上保证重要任务的运行. 除了nice.renice外,可以通过CPU  affini ...

  4. Mybatis-Spring SqlSessionTemplate 源码解析

    在使用Mybatis与Spring集成的时候我们用到了SqlSessionTemplate 这个类. <bean id="sqlSession" class="or ...

  5. CCNA网络工程师学习进程(7)路由器的路由配置

        前面一节已经介绍了路由器的端口配置,接着我们介绍路由器的路由配置:静态路由.默认路由和浮动路由的配置:动态路由协议的配置,包括RIP.IGRP.EIGRP和OSPF.     (1)路由器的基 ...

  6. JS高程5.引用类型(6)Array类型的位置方法,迭代方法,归并方法

    一.位置方法 ECMAScript5为数组实例添加了两个位置:indexOf()和 lastIndexOf().这两个方法接收两个参数:要查找的项和(可选的)表示查找起点位置的索引(如在数组[7,8, ...

  7. 关于C/C++中的“auto”

    C/C++ 98标准 C++03标准 意思完全一样:auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存.auto的出现意味着,当前变量的作用域为当前函数或代码段的局部变量,意味着当 ...

  8. [ios2]UItableview相关 【转】

    1.使tableview在界面启动后定位在x行 -(void)viewDidLoad {     [superviewDidLoad];   NSIndexPath *first = [NSIndex ...

  9. docker网络解析

    Docker概念和默认网络 什么是Docker网络呢?总的来说,网络中的容器们可以相互通信,网络外的又访问不了这些容器.具体来说,在一个网络中,它是一个容器的集合,在这个概念里面的一个容器,它会通过容 ...

  10. Spring IOC的理解

            学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理 ...