版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pk_sir/article/details/78341375
这是一个比较简单的功能需求,给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;
}
}
如有问题,欢迎讨论!!
源码在此