gpt4 book ai didi

swift2 - 如何在swift中制作信用卡(xxxx-xxxx-xxxx)类型的文本

转载 作者:行者123 更新时间:2023-12-03 22:47:15 27 4
gpt4 key购买 nike

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

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的delegate,将卡号限制为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
}

希望这会有所帮助。谢谢

关于swift2 - 如何在swift中制作信用卡(xxxx-xxxx-xxxx)类型的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37190620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com