Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift:在十进制文本字段输入中显示$和逗号_Swift_Textfield - Fatal编程技术网

Swift:在十进制文本字段输入中显示$和逗号

Swift:在十进制文本字段输入中显示$和逗号,swift,textfield,Swift,Textfield,我有一些带有十进制键盘的文本字段,我想让它们在屏幕上显示$和逗号($1222000.00)。还可以更改文本的间距,因为添加逗号时,文本会很拥挤 for textField in self.numberTextField! as [UITextField] { textField.keyboardType = .DecimalPad textField.inputAccessoryView = keyboardToolbar numberTextField是我的文

我有一些带有十进制键盘的文本字段,我想让它们在屏幕上显示$和逗号($1222000.00)。还可以更改文本的间距,因为添加逗号时,文本会很拥挤

for textField in self.numberTextField! as [UITextField] {
        textField.keyboardType = .DecimalPad
        textField.inputAccessoryView = keyboardToolbar

numberTextField是我的文本字段集合。感谢您的帮助!非常感谢

每次字段更改时,您都在创建一个新的NSNumberFormatter对象。我应该在哪里添加这些代码?在问题中提到的循环中,或在viewcontroller类中?在您的viewcontroller中。拆下该循环。只需添加UITextFieldDelegate并确认即可。然后使用上面的代码。我使用@IBOutlet var numberTextField:Array?,在formatCurrency函数中,self.numberTextField.text有一个错误,称为Array?没有成员“文本”。我添加了“类CashflowViewController:UIViewController,UITextFieldDelegate”,是否正确?每次字段更改时,您都在创建一个新的NSNumberFormatter对象。我应该在哪里添加这些代码?在问题中提到的循环中,或在viewcontroller类中?在您的viewcontroller中。拆下该循环。只需添加UITextFieldDelegate并确认即可。然后使用上面的代码。我使用@IBOutlet var numberTextField:Array?,在formatCurrency函数中,self.numberTextField.text有一个错误,称为Array?没有成员“text”。我添加了“类CashflowViewController:UIViewController,UIExtFieldDelegate”,是否正确?
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    let oldText = textField.text! as NSString
    var newText = oldText.stringByReplacingCharactersInRange(range, withString: string) as NSString!
    var newTextString = String(newText)

    let digits = NSCharacterSet.decimalDigitCharacterSet()
    var digitText = ""
    for c in newTextString.unicodeScalars {
        if digits.longCharacterIsMember(c.value) {
            digitText.append(c)
        }
    }

    let formatter = NSNumberFormatter()
    formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
    formatter.locale = NSLocale(localeIdentifier: "en_US")
    let numberFromField = (NSString(string: digitText).doubleValue)/100
    newText = formatter.stringFromNumber(numberFromField)

    textField.text = String(newText)

    return false

}