gpt4 book ai didi

ios - 输入时在 Swift 中的文本字段中格式化货币

转载 作者:IT王子 更新时间:2023-10-29 05:28:33 30 4
gpt4 key购买 nike

我正在尝试在用户输入时格式化 Swift 文本字段中的货币输入。

到目前为止,我只能在用户输入完成后才能格式化成功:

@IBAction func editingEnded(sender: AnyObject) {

let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
formatter.locale = NSLocale(localeIdentifier: "en_US")
var numberFromField = NSString(string: textField.text).doubleValue

textField.text = formatter.stringFromNumber(numberFromField)
}

但是,我希望在用户输入货币时对其进行格式化。当我尝试在 TextField 操作“编辑已更改”或“值已更改”时执行此操作时,我只能输入 1 个数字(如果我输入 8,它将变为 8.00 美元)但是一旦我输入第二个数字,一切都会变为 0.00 美元,我无法再进入。

有什么建议吗?我觉得这应该很容易解决,但我不太明白。

最佳答案

我修改了今天早些时候的功能。适用于“en_US”和“fr_FR”。但是,对于“ja_JP”,除以 100 以创建小数是一个问题。您将需要一个 switch 或 if/else 语句来分隔带有小数点的货币和那些在格式化程序格式化时没有小数点的货币。但我认为这会让你进入你想成为的空间。

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var textField: UITextField!
var currentString = ""

override func viewDidLoad() {
super.viewDidLoad()

self.textField.delegate = self
}

//Textfield delegates
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { // return NO to not change text

switch string {
case "0","1","2","3","4","5","6","7","8","9":
currentString += string
println(currentString)
formatCurrency(string: currentString)
default:
var array = Array(string)
var currentStringArray = Array(currentString)
if array.count == 0 && currentStringArray.count != 0 {
currentStringArray.removeLast()
currentString = ""
for character in currentStringArray {
currentString += String(character)
}
formatCurrency(string: currentString)
}
}
return false
}

func formatCurrency(#string: String) {
println("format \(string)")
let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
formatter.locale = NSLocale(localeIdentifier: "en_US")
var numberFromField = (NSString(string: currentString).doubleValue)/100
textField.text = formatter.stringFromNumber(numberFromField)
println(textField.text )
}
}

关于ios - 输入时在 Swift 中的文本字段中格式化货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569144/

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