iOS 中 使用UITextField格式化银行卡号码的解决方案

今天做格式化银行卡,避免重复造轮子,找度娘查了下,看到一个不错的实现方式,记录下来,并附带实现思路

#pragma mark - UITextFieldDelegate UITextField键入字符后调用
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
 //拿到为改变前的字符串
 NSString *text = [textField text];
 //键入字符集,\b标示删除键
 NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
 //对当前键入字符进行空格过滤
 string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
 //invertedSet会对当前结果集取反,检查当前键入字符是否在字符集合中,如果不在则直接返回NO 不改变textField值
 if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
  return NO;
 }
 //增加当前键入字符在改变前的字符串尾部
 text = [text stringByReplacingCharactersInRange:range withString:string];
 //再次确认去掉字符串中空格
 text = [text stringByReplacingOccurrencesOfString:@" " withString:@""];
 //初始化字符用来保存格式化后的字符串
 NSString *newString = @"";
 //while中对text进行格式化
 while (text.length > 0) {
  //按4位字符进行截取,如果当前字符不足4位则按照当前字符串的最大长度截取
  NSString *subString = [text substringToIndex:MIN(text.length, 4)];
  //将截取后的字符放入需要格式化的字符串中
  newString = [newString stringByAppendingString:subString];
  if (subString.length == 4) {
   //截取的字符串长度满4位则在后面增加一个空格符
   newString = [newString stringByAppendingString:@" "];
  }
  //将text中截取掉字符串去掉
  text = [text substringFromIndex:MIN(text.length, 4)];
 }
 //再次确认过滤掉除指定字符以外的字符
 newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
 //国内银行卡一般为16~19位 格式化后增加4个空格 也就是最多23个字符
 if (newString.length > 23) {
  return NO;
 }
 //手动对textField赋值
 [textField setText:newString];
 //返回NO 则不通过委托自动往当前字符后面增加字符,达到格式化效果
 return NO;
}
(0)

相关推荐

  • 解决iOS UITextField 编辑时文本偏移问题

    1.在cell中添加UITextField,在编辑的时候总是出现文本偏移问题,编辑结束时回复正常,解决方式如下: (1)代码创建UITextField,并添加上去,设置textField的一些属性: - (UITextField *)textField{ if (_textField == nil) { _textField = [UITextField new]; _textField.borderStyle = UITextBorderStyleNone; _textField.conten

  • iOS中修改UITextField占位符字体颜色的方法总结

    前言 最近学了UITextField控件, 感觉在里面设置占位符非常好, 给用户提示信息, 于是就在想占位符的字体和颜色能不能改变呢?下面是小编的一些简单的实现,有需要的朋友们可以参考. 修改UITextField的占位符文字颜色主要有三个方法: 1.使用attributedPlaceholder属性 @property(nullable, nonatomic,copy) NSAttributedString *attributedPlaceholder NS_AVAILABLE_IOS(6_0

  • iOS改变UITextField占位文字颜色的三种方法

    有时,UITextField自带的占位文字的颜色太浅或者不满足需求,所以需要修改,而UITextField没有直接的属性去修改占位文字的颜色,所以只能通过其他间接方式去修改. 例如:系统默认的占位文字颜色太浅 需要加深颜色,或者改变颜色 示例: 核心代码 方法一:通过attributedPlaceholder属性修改占位文字颜色 CGFloat viewWidth = self.view.bounds.size.width; CGFloat textFieldX = 50; CGFloat te

  • iOS App开发中UITextField组件的常用属性小结

    重点属性 在 Xcode 中使用 IB 给视图拖上去一个文本框后,选中文本框,可以在Attribute Inspector中设置其各种属性. Attribute Inspector 分为三部分,分别是 Text Field.Control 和 View 部分.我们重点看看 Text Field 部分. Text Field 部分有以下选项: 1.Text :设置文本框的默认文本. 2.Placeholder : 可以在文本框中显示灰色的字,用于提示用户应该在这个文本框输入什么内容.当这个文本框中

  • IOS UI学习教程之设置UITextField各种属性

    UITextField是IOS中非常常用的一个控件,用来接收用户输入信息,完成应用和用户的交互.它的主要属性设置如下: //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enu

  • iOS UITextField最大字符数和字节数的限制详解

    前言 这里我给大家几组测试用例可以一试,为啥不好用. 1.限制10个字节,输入2个Emoj之后是8个字节(一个Emoj是4个字节),此时再输入一个中文,看看结果如何(中文的UTF8占3个字节) 2.限制5个字符,一个Emoj是2个字符,其他都是一个.此时输入两个Emoj,再输入中文,然后中文联想试试. 就目前的情况来说,看了很多资料,并没有一个通用的能限制字符数和字节数的封装.这里全面进行了总结,并进行了封装.欢迎大家下载. 一. 字符限制 1. 错误方法 常见的这种方法是错误的,会导致Emoj

  • iOS UIAlertController中UITextField添加晃动效果与边框颜色详解

    前言 大家都知道在iOS8中引入了UIAlertController,通过UIAlertController可以方便的添加文本框进行编辑,但是,在输入错误的内容时,如何对用户进行提醒就成了问题,因为UIAlertController中的所有UIAlertAction都会导致UIAlertController的消失.这里,我就描述两种提示的方法,分别是晃动文本框和修改边框的颜色.下面话不多说了,来一起看看详细的实现方法吧. 晃动UITextField 晃动UITextField其实就是对它添加一个

  • iOS开发之自定义UITextField的方法

    UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等. 观察效果图 UITextField有以下几种特点: 1.默认占位文字是灰色的 2.当光标点上去时,占位文字变为白色 3.光标是白色的 接下来我们通过不同的方法来解决问题 一.将xib中的UITextField与代码关联 通过NSAttributeString方法来更改占位文字的属性 (void)viewDidLoad { [super viewDidLoad]; // Do any additio

  • iOS输入框(UITextField)密码明暗文切换方法

    在做明暗文切换(密码输入框)的时候遇见一个坑,就是切换secureTextEntry的时候,输入框的光标会偏移,下面列出了一个解决办法及一种明暗文切换的方法 - (IBAction)pwdTextSwitch:(UIButton *)sender { // 前提:在xib中设置按钮的默认与选中状态的背景图 // 切换按钮的状态 sender.selected = !sender.selected; if (sender.selected) { // 按下去了就是明文 NSString *temp

  • iOS 中 使用UITextField格式化银行卡号码的解决方案

    今天做格式化银行卡,避免重复造轮子,找度娘查了下,看到一个不错的实现方式,记录下来,并附带实现思路 #pragma mark - UITextFieldDelegate UITextField键入字符后调用 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //拿到为改变前的字符串 NSStri

  • iOS中金额字符串格式化显示的方法示例

    前言 由于项目中很多地方展现统计金额, 比如在一些金融类的 App 中,对于表示金额类的字符串,通常需要进行格式化后再显示出来.例如: 0 –> 0.00 123 –> 123.00 123.456 –> 123.46 102000 –> 102,000.00 10204500 –> 10,204,500.00 它的规则如下: 个位数起每隔三位数字添加一个逗号,同时保留两位小数,也称为"千分位格式". 我们一开始采取了一种比较笨拙的处理方式如下: 首先根据

  • IOS 中UITextField,UITextView,UILabel 根据内容来计算高度

    IOS 中UITextField,UITextView,UILabel 根据内容来计算高度 在开发的过程中,常常遇到根据内容来决定控件的高度的情况,常见的就是UITextField,UITextView,UILabel这三个控件,下面一UITextView 为例来说明一下: 首先新新建一个textView. 设施text,font UITextView *textView = [[UITextView alloc] init]; textView.text = @"2015-01-19 14:0

  • IOS中UITextView或UITextField字数限制的实现

    IOS中UITextView或UITextField字数限制的实现 UITextView或UITextField字数限制,输入时的限制,复制粘贴时的限制 字数限制有三种方法 在代理方法 "- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string" 或 "- (BOOL)textView:

  • IOS 中UITextField和UITextView中字符串为空和空格的解决办法

    IOS 中UITextField和UITextView中字符串为空和空格的解决办法 在用UITextField,UITextView声明的属性写一些页面的时候,经常会出现这样的小bug,就是给空值或空格也能进行传值或存储,这里给一些解决的小方法: eg: 这里声明了一个属性,就以此为例来说 @property (nonatomic, strong) UITextField *titlefield; 为空时: if(_titlefield.text == nil){ //执行一些警告操作 } if

  • iOS应用开发中使UITextField实现placeholder属性的方法

    我们都知道iOS开发中的UITextField有个placeholder属性,placeholder可以很方便引导用户输入.但是UITextView却没有placeholder属性. 一.猥琐的方法 如何让UITextView也有placeholder功能呢?今天给各位分享一个比较猥琐的做法.思路大概是这样的: 把UITextView的text当placeholder使用. 在开始编辑的代理方法里清除placeholder. 在结束编辑的代理方法里在设置placeholder. 实现方法: 1.

  • iOS中UITextField实现过滤选中状态拼音的代码

    2018年上班的第二天,就这样背了一个大锅.我们项目中有一个搜索功能,在这一期的版本中,为了增强优化,去除了过滤空格的请求,这样或许能增加很好的用户体验,恰恰相反,偷鸡不成蚀把米.没想到苹果系统的输入法竟然能自动联想,在没有选择汉字的时候,竟然能联想出来一大堆智能拼音,what???还有这种操作????输就输在了我几乎不使用苹果系统的输入法,我的手机设置一般都是把苹果的输入法删除了,直接使用搜狗.(苹果系统的输入法太难用了)不过对于测试人员来说,一定要测试各个系统的输入法,切记!切记!切记! 那

  • iOS UITextField 显示银行卡格式的方法

    输入框显示银行卡格式,即为每隔4位出现一个空格, 下面使用UITextFieldDelegate,编码实现: 首先引用使用代理 类名 ()<UITextFieldDelegate> self.textField.delegate = self; 使用代理方法 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)s

  • IOS中使用UIWebView 加载网页、文件、 html的方法

    UIWebView 是用来加载加载网页数据的一个框.UIWebView可以用来加载pdf word doc 等等文件 生成webview 有两种方法: 1.通过storyboard 拖拽 2.通过alloc init 来初始化 创建webview,下列文本中 _webView.dataDetectorTypes = UIDataDetectorTypeAll; 是识别webview中的类型,例如 当webview中有电话号码,点击号码就能直接打电话 - (UIWebView *)webView

随机推荐