如何在 swift 中使信用卡 (xxxx-xxxx-xxxx) 输入文本

2023-12-03

我正在尝试使用以下代码创建信用卡类型文本,但无法做到这一点,有什么办法吗?

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    let formatter = NSNumberFormatter()

    formatter.groupingSize = 4
    formatter.groupingSeparator = "-"
    formatter.usesGroupingSeparator = true

    print("txtCardNumber \(txtCardNumber.text)")
}

下面的逻辑实现了带空格的简单 16 位信用卡格式。

编辑:针对 Swift 4/5 调整代码

第 1 步:为信用卡文本字段创建操作

self.txtFieldCreditCardNumber.addTarget(self, action: #selector(didChangeText(textField:)), for: .editingChanged)

第 2 步:从文本字段的选择器方法中调用一个方法来执行格式化

@objc func didChangeText(textField:UITextField) {
    textField.text = self.modifyCreditCardString(creditCardString: textField.text!)
}

步骤3:实现方法“modifyCreditCardString”

func modifyCreditCardString(creditCardString : String) -> String {
     let trimmedString = creditCardString.components(separatedBy: .whitespaces).joined()

     let arrOfCharacters = Array(trimmedString)
     var modifiedCreditCardString = ""

     if(arrOfCharacters.count > 0) {
         for i in 0...arrOfCharacters.count-1 {
             modifiedCreditCardString.append(arrOfCharacters[i])
             if((i+1) % 4 == 0 && i+1 != arrOfCharacters.count){
                 modifiedCreditCardString.append(" ")
             }
         }
     }
     return modifiedCreditCardString
 }

第四步:实现UITextField的委托,将卡号限制为16个字符。 19 = 16 + 3(每4位数字后1个空格)

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
     let newLength = (textField.text ?? "").count + string.count - range.length
     if(textField == txtFieldCreditCardNumber) {
         return newLength <= 19
     }
     return true
}

希望这会有所帮助。谢谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 swift 中使信用卡 (xxxx-xxxx-xxxx) 输入文本 的相关文章

  • 如何在 Swift 中使用 CVaListPointer 参数调用方法

    我应该如何调用以下方法 该方法属于打印日志的类 func log format String withParameters valist CVaListPointer 我想要实现的目标 在 Objective C 中看起来像这样 NSLog
  • AVPlayer 消除了 Swift 2.2 中的观察者崩溃

    我有一个视频应用程序 是我在 Swift 1 中构建的 我一直在尝试迁移到 Swift 2 2 除了与观察者有关的奇怪崩溃之外 这一切 最终 都正常工作 func removeObservers print REMOVING OBSERVE
  • 使用 Alamofire ObjectMapper 映射到 Swift 对象问题显示 nil

    我是 iOS 和 Swift 开发环境的新手 我试图使用 Alamofire 来提取 JSON 并使用 AlamofireObjectMapper 将检索到的 JSON 集合映射回我的 Swift 对象 问题是我可以通过 Alamofire
  • 什么时候使用inout参数?

    将类或基本类型传递给函数时 函数中对参数所做的任何更改都将反映在类外部 这基本上是同一件事inout参数应该做的 inout 参数的良好用例是什么 inout意思是修改局部变量也会修改传入的参数 如果没有它 传入的参数将保持相同的值 使用时
  • 无法使用参数列表在 Swift 2 中调用“sendAsynchronousRequest”

    我目前正在重写部分 Swift 1 2 代码以与 Swift 2 0 兼容 实际上我无法弄清楚对 sendAsynchronousRequest 进行了哪些更改 目前我的所有请求都失败了 NSURLConnection sendAsynch
  • 分块解密媒体文件并通过 AVPlayer 播放

    我有一个mp4 video file我是谁encrypting保存并decrypting通过 AVPlayer 播放 Using CRYPTOSWIFT Library for encrypting decrypting 当我一次解密整个文
  • UIImageView 的触摸向上和触摸向下操作

    我想要实现的是 当用户触摸 UIImageView 时设置 Image1 当用户抬起手指时设置 Image2 我只能用此代码获取 UIGestureRecognizerState Ended var tap UITapGestureReco
  • Swift 2 错误处理和 while

    例如下面的代码 while let data Provider getData 使用 Swift 2 你会遇到两个错误 条件绑定的初始化程序必须具有可选类型 而不是 字符串 调用可以抛出 但它没有标记为 try 并且错误不会被处理 在这里进
  • 使用 Swift 2 进行 Base64 编码/解码

    我的代码在 Xcode 6 4 和 Swift 1 2 上运行良好 var imageData UIImageJPEGRepresentation firstImageView image 0 2 let base64String imag
  • Swift 中不区分大小写的字典

    Given a Dictionary whose Key属于类型String 有没有办法以不区分大小写的方式访问该值 例如 let dict name John location Chicago 有办法打电话吗dict NAME dict
  • AVAudioPlayer 不播放声音

    我有一个 WatchKit 应用程序 当点击手表上的按钮时 它会向 iOS 应用程序发出播放声音的信号 由于某种原因 当我使用自定义类来处理设置实例时 声音没有播放AVAudioPlayer并播放声音 如果我在里面做那部分session d
  • Swift Alamofire + Promise 捕获

    伙计们 除了catch之外 以下工作正常 xcode错误与expected member name following 这是使用 PromiseKit 进行承诺的正确方法吗 欢迎所有建议 谢谢 IBAction func loginButt
  • Swift 2.0 中的 countForFetchRequest

    我正在尝试使用countForFetchRequestSwift 2 0 中托管对象上下文上的方法 我注意到错误处理executeFetchRequest已更改为新的do try catch syntax func executeFetch
  • 将 Objective-C 框架 (CocoaPod) 导入 Swift?

    我正在尝试导入libjingle peerconnection框架到我的 Xcode 项目中 但由于某种原因 我无法使用以下命令导入 Objective C 标头import RTCICEServer在 Swift 源文件中 我尝试使用头文
  • Xcode 7.3 beta 1 与 Swift 中的 CommonCrypto

    我在 Swift 框架中使用 CommonCrypto 它已经运行良好一年多了 我使用了这里找到的解决方案 在 Swift 框架中导入 CommonCrypto https stackoverflow com questions 25248
  • Swift 2 OAuth2 LinkedIn 连接

    我将使用 Swift 2 和 Xcode 7 制作一个本机 iOS 应用程序 用户应该使用 LinkedIn 和 OAuth 2 登录 但我想知道应该如何开始设置 我对 OAuth 2 没有太多经验 有好的教程或示例应用程序吗 我看到了雷
  • 使用prepareForSegue传递数据

    我试图将数据从viewController 1传递到viewController2 我有2个按钮和1个segue 因此有一个segue标识符 这2个按钮 按下时每个按钮应显示 1个标签用于显示标题 1个textView用于显示定义 我很难显
  • 使用未声明的类型“对象”

    这太奇怪了 通常我可以理解未声明的类 但这是声称 Object 类本身未声明 NSObject 可以工作 但我的项目设置方式我需要它是一个纯 Swift 对象 我的类标题如下所示 import UIKit import Foundation
  • 搜索TableView无法选择行

    在搜索 tableView 时 每次我尝试选择一行时 它都会返回到未搜索的 tableView 我缺少什么 当不过滤表格时 segue 工作得很好 当搜索栏被激活时 选择行的能力就会消失 import UIKit import Founda
  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer

随机推荐

  • phpMyAdmin - 无法连接 - 无效设置 - 自从我添加 root 密码以来 - 被锁定

    我运行XAMPP 几天前 我通过 phpmyadmin 设置了 root 密码 从那一刻起我就无法访问 phpMyAdmin 我按照帮助这个链接但那里一切似乎都很好 在 config inc php 中 我什至尝试完全卸载 xampp 重新
  • 旋转动画不适用于 chrome

    我制作的动画可以在 Firefox 上运行 但不能在 Chrome 上运行 我已经尝试了十几种解决方案 但似乎无法使其发挥作用 这是我的代码 path animation name turn transform origin 50px 50
  • 如何在keycloak管理控制台中对客户端进行IP限制

    我在 keycloak 管理控制台中定义了一个客户端 以使用 client credentials 流授权它在我的应用程序中调用服务器到服务器 api 一切都很好 我想对该客户端应用 IP 限制 我可以在管理控制台中的哪里定义此限制 我在k
  • XML 节点的包装组

    我正在使用 PHP5 我需要将 XML 转换为以下形式
  • InvokeExact 对对象,其类型由类加载器动态加载

    我花了一整天的时间来解决这个问题 我的问题是如何对实例进行 MethodHandle invokeExact 调用 该实例的类类型是在程序运行时动态加载的 为了使问题更清楚 我在下面展示了我的示例代码 Class
  • 使用 java applet 查看 .doc 文件

    我有一个网络应用程序 我已经在服务器端生成了 xml 格式的 MS Word 文档 Word 2003 XML 文档 我需要使用某种查看器向客户端用户显示此文档 那么 问题是 我可以使用哪些库来解决这个问题 我需要一个API来在客户端查看w
  • 如何使用xslt将json转换为xml

    如何将 JSON 转换为 XML 考虑
  • 如何使用 Ninject 将 ModelState 作为参数注入?

    我对 Ninject 很陌生 我想找到一种方法将控制器的 Modelstate 进一步传递到服务层 我现在拥有的 private readonly IAccountService service public AccountControll
  • 如何获取R代码表达式中的所有变量?

    如何解码 R 中的表达式以获取涉及的所有变量 例如 如果您有 z lt x y get all variables z 1 x y 您可以使用all vars 但你需要引用你的表达 all vars quote x y 1 x y 你不能只
  • Ninject 模型验证器导致中等信任度问题

    Using 忍者2 2 with ASP NET MVC 3 我有一个控制器和一些位于外部程序集中的类 它们是通过加载NinjectModule来自所述组件 这些模型包含一些验证属性 当对采用具有验证属性的模型的操作执行后操作时 Ninje
  • 如何从安装部署项目中排除 app.config

    如何从安装部署项目中排除 app config 我必须维护 app config 中的加密部分 我知道的唯一 半 嵌入方式是使用 RsaProtectedConfigurationProvider 或 DPAPI 提供程序运行代码 由于我必
  • 如何使decimal.TryParse保留尾随零?

    目前如果我这样做 decimal d temp 22 00 decimal TryParse temp NumberStyles Any CultureInfo InvariantCulture out d 然后 d 结果是 22 有什么方
  • System.Timer elapsed 事件似乎在 .Net 中短时间间隔内延迟触发

    我通过 UART 端口对系统进行采样 然后将信息记录在带有时间戳 包括毫秒 的文件中 如果我以 1 秒的间隔采样 数据会按预期返回 类似于 1 52 45 PM 750 data 1 52 45 PM 750 data 1 52 45 PM
  • r:缺失日期的完整值

    在 R 中 如果我有这些数据 date hour temp 2014 01 05 20 00 00 16 2014 01 06 20 00 00 14 2014 01 06 22 00 00 18 与seq我可以获得日期时间序列 begin
  • JSON如何判断成功与错误?

    我是 JSON 新手 一直在 MVC3 ASP NET 中使用它 但是有人可以阐明如何根据 JSON 结果返回错误吗 我的视图中有以下调用 ajax type POST dataType json url EditJSON data Fil
  • 使用 XMLHttpRequest 加载大型 json 文件 (250mb+)

    虽然我查看了此处和其他来源 但我似乎无法完全找到在 javascript 中使用 XMLHttpRequest 加载更大的 JSON 从文件 的问题 我从 C 应用程序生成此 JSON 文件 并且从未遇到过任何无效 json 的问题 较小的
  • 在 swift 3 中使用计时器自动更改 UIPageViewController 中的页面?

    I have UIPageViewController包含 4 个视图控制器 我设置了自动更改视图控制器的计时器 转到下一个视图控制器 这个计时器和方法将起作用但问题是它仅适用于第一张幻灯片以及应用程序运行时和 5 秒后UIPageView
  • Python - 获取命令输出无法解码

    我目前正在开发一个项目 我需要在 powershell 中运行命令 并且部分输出不是英语 特别是希伯来语 例如 问题的简化版本 如果我想获取桌面的内容 并且有一个希伯来语文件名 import subprocess command power
  • 我的 PHP 代码被注释掉了

    在这一切发生之前 我正在运行这个 wordpress 安装来使用 xampp 开发主题 但我决定将这台机器的内存从 2GB 升级到 6GB 因为我需要额外的空间来容纳应用程序 我通过复制代码将代码备份到单独的分区中 由于我当时的操作系统是3
  • 如何在 swift 中使信用卡 (xxxx-xxxx-xxxx) 输入文本

    我正在尝试使用以下代码创建信用卡类型文本 但无法做到这一点 有什么办法吗 func textField textField UITextField shouldChangeCharactersInRange range NSRange re