iOS UITextField添加分割功能

来源:互联网 发布:淘宝店铺导航添加分类 编辑:程序博客网 时间:2024/06/05 19:35

这是一个比较简单的功能需求,给UITextField添加了一个分割间隙,就是输入银行卡号时,每4位数一组,便于区分,使用非常简单,也非常轻量级,就一个类。话不多少,直接上代码!!!
使用方法

//1,先导入头文件#import "UITextField+TextSeparater.h"//2,设置间隔,3个一组,还是4个一组。。。 OK了,就这么方便self.testTF.separatedInterval = 6;

代码如下
1,首先写一个类别,利用Runtime 添加一个属性

/** *  给UITextField添加了一个设置分割数的属性, */- (void)setSeparatedInterval:(NSInteger)separatedInterval;- (NSInteger)separatedInterval;

2,.m文件实现如下

注意

// 利用KVO 监听TextFeild的输入变化,但是当文字变化时,观测者没有响应,//只用当 textField.text = @"1234" 的时候,才会响应   [self addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil];    //这个是每当TextFeild的输入变化时,会响应    [self addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventAllEditingEvents];

主要功能实现如下:

-(void)valueChanged:(UITextField*)tf{    UITextRange * editRange =  self.selectedTextRange;    if ((tf.text != nil) && (tf.text.length>self.separatedInterval) ) {        NSMutableAttributedString * string =[[NSMutableAttributedString alloc]initWithString:tf.text];        for (int i = 1; i < tf.text.length; i ++) {            if ( i %self.separatedInterval == 0) {                [string addAttribute:NSKernAttributeName value:[NSNumber numberWithFloat:10.f] range:NSMakeRange(i-1, 1)];            }        }        self.attributedText = string;        self.selectedTextRange = editRange;    }    }

如有问题,欢迎讨论!!
源码在此

原创粉丝点击