gpt4 book ai didi

swift - UITextField 中的动态货币 - Swift 3

转载 作者:行者123 更新时间:2023-11-28 08:07:38 25 4
gpt4 key购买 nike

我有这段代码,来自 GitHub 和一些 StackOverflow 帖子

extension String {

// formatting text for currency textField
func currencyInputFormatting() -> String {

var number: NSNumber!
let formatter = NumberFormatter()
formatter.numberStyle = .currencyAccounting
formatter.currencySymbol = "$"
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2

var amountWithPrefix = self

// remove from String: "$", ".", ","
let regex = try! NSRegularExpression(pattern: "[^0-9]", options: .caseInsensitive)
amountWithPrefix = regex.stringByReplacingMatches(in: amountWithPrefix, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.characters.count), withTemplate: "")

let double = (amountWithPrefix as NSString).doubleValue
number = NSNumber(value: (double / 100))

// if first number is 0 or all numbers were deleted
guard number != 0 as NSNumber else {
return ""
}

return formatter.string(from: number)!
}
}

我使用这个扩展能够在用户输入时在 UI 文本字段中动态创建货币格式。它工作正常,但我无法删除我写的内容。我必须手动将光标拖动到我要删除的位置,否则它将不起作用。为什么会这样

最佳答案

我试过用这种方式添加监听器

textfield.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

并以这种方式运行你的函数

func textFieldDidChange(_ textField: UITextField) {
let cur = textField.text!.currencyInputFormatting()
textField.text = cur
}

一切正常。我可以从最后删除我的输入,只要我在那里有一个数字,格式仍然会开始。因此,在文本字段上设置文本操作后,光标将自动移动到字符串的末尾,因此您只能删除末尾的字符。如果您想删除任何其他字符,只需像在笔记本中编辑文本时一样拖动光标即可。

关于swift - UITextField 中的动态货币 - Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44656091/

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