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

输入框显示银行卡格式,即为每隔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 显示银行卡格式的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。