我从今天早些时候开始修改了该功能。非常适合“ en_US”和“ fr_FR”。但是,对于“
ja_JP”,用100除以创建小数是一个问题。您将需要有一个switch或if /
else语句,该语句用小数点分隔货币和用格式化程序格式化时不包含小数的货币。但是我认为这可以让您进入想要成为的空间。
import UIKitclass 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 ) }}


