gpt4 book ai didi

ios - numberformatter(样式货币)删除不起作用

转载 作者:行者123 更新时间:2023-11-30 12:36:45 25 4
gpt4 key购买 nike

下面是我用来格式化数字并将其重新分配回文本字段的代码。在删除文本时,我遇到一些问题,完整的文本被删除,而不是逐字符删除,而且我无法重新输入文本。请指导我解决这个问题。

let currencyFormatter = NumberFormatter()
let decimalFormatter = NumberFormatter()
var currentString = ""

func formatCurrency(_ string: String) {
let numberFromField = (NSString(string: string).doubleValue)/100
activeField?.text = currencyFormatter.string(from: NSNumber(value: numberFromField))
}

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if finalTextCount >= maxCharactersLimit && string != ""{
return false
}

switch string {
case "0","1","2","3","4","5","6","7","8","9":
currentString += string
if textField == kmMinTextField || textField == kmMaxTextField {
formatKms(currentString)
} else {
formatCurrency(currentString)
}
default:
if string.characters.count == 0 && currentString.characters.count != 0 {
currentString = String(currentString.characters.dropLast())
if textField == kmMinTextField || textField == kmMaxTextField {
formatKms(currentString)
} else {
formatCurrency(currentString)
}
}
}

return false
}

最佳答案

我运行了你的代码,没有遇到这些问题。如果您使用的是 XIB 或 Storyboard,请仔细检查“编辑开始时清除”是否未选中”

此外,我需要设置变量才能使其工作:

var maxCharactersLimit = 10

在textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String)

let finalTextCount = textField.text?.characters.count != nil ? textField.text!.characters.count : 0

关于ios - numberformatter(样式货币)删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42763625/

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