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

来自:互联网
时间:2020-05-26
阅读:
免费资源网 - https://freexyz.cn/

输入框显示银行卡格式,即为每隔4位出现一个空格,

下面使用UITextFieldDelegate,编码实现:

首先引用使用代理

类名 ()<UITextFieldDelegate>
self.textField.delegate = self;

使用代理方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  if (textField == self.contentTextField) {
    // 4位分隔银行卡卡号
    NSString *text = [textField text];
    NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
    if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
      return NO;
    }
    text = [text stringByReplacingCharactersInRange:range withString:string];
    text = [text stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"%@",text);
//    text为输入框内的文本,没有“ ”的内容
    NSString *newString = @"";
    while (text.length > 0) {
      NSString *subString = [text substringToIndex:MIN(text.length, 4)];
      newString = [newString stringByAppendingString:subString];
      if (subString.length == 4) {
        newString = [newString stringByAppendingString:@" "];
      }
      text = [text substringFromIndex:MIN(text.length, 4)];
    }
    newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
    if ([newString stringByReplacingOccurrencesOfString:@" " withString:@""].length >= 21) {
      return NO;
    }
    [textField setText:newString];
    return NO;
  }
  return YES;
}

使用以上方法即可实现UITextField 显示银行卡格式。

这篇iOS UITextField 显示银行卡格式的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

免费资源网 - https://freexyz.cn/
返回顶部
顶部