ios - 如何在 Swift 中编辑或更新文本字段中的文本?
问题描述
这是此屏幕的 .gif:http: //g.recordit.co/73jHPP5LE6.gif
如上图所示,"25.000.000"
TextField 中有一个 UILabel Rp 和一个文本"25000000"
(在用户填写文本字段后)。它们实际上都是一种货币。
"25000000"
我想从to编辑 Textfield 中的文本"25.000.000"
,我可以使用函数给出点 (.) 分隔符,假设formattedWithSeparator()
它可以用于这样的 Int:
25000.formattedWithSeparator()
但我不知道我必须在哪里实现该功能如果我想在用户更新/写入文本字段时编辑/更新 TextField 内的文本(不是占位符)。
我应该怎么办?
解决方案
尝试这个:
override func viewDidLoad() {
super.viewDidLoad()
textField.addTarget(self, action: #selector(myTextFieldDidChange), for: .editingChanged)
}
func myTextFieldDidChange(_ textField: UITextField) {
if let amountString = textField.text?.currencyInputFormatting() {
textField.text = amountString
}
}
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)!
}
}
推荐阅读
- javascript - 如何在 AWS Lambda 函数中连接 node-imap 模块
- python - 如何继续添加更多 json 信息
- apache-spark - 从 Spark 中的 executor/worker 中检索本地对象
- python - Python在网页中读取表单
- python - 熊猫索引错误
- json - 将 elasticsearch.Config 结构保存到 JSON 文件
- java - 处理程序不会延迟 - Android Studio Java
- entity-framework-core - 如何防止插入 DateTimeOffset 的默认值?
- php - Nginx + php-fpm 仅适用于 EC2 实例上打开的所有端口
- java - 执行更新失败并出现 RELATION 错误