HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在Swift的输入文本框中格式化货币大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在 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,而I不能进一步超越这一点.

有什么建议么?我觉得这应该是一个简单的修复,但我不能完全了解它.

解决方法

修改了今天早些时候的@L_197_8@.适用于“en_US”和“fr_FR”.然而,对于“ja_JP”,除以100我做创建小数是一个问题.您将需要一个开关或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的输入文本框中格式化货币全部内容,希望文章能够帮你解决ios – 在Swift的输入文本框中格式化货币所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。