Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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 带十进制键盘的UITextfield中的自动逗号_Swift_Swift2_Uitextfield - Fatal编程技术网

Swift 带十进制键盘的UITextfield中的自动逗号

Swift 带十进制键盘的UITextfield中的自动逗号,swift,swift2,uitextfield,Swift,Swift2,Uitextfield,我使用的UITextField具有十进制键盘。因此,用户只能键入数字。我想文本字段自动添加逗号,每千个用户类型。这样用户就可以很容易地识别他们输入了多少内容。有没有一个共同的方法来做到这一点 答案应该有帮助。他们在shouldChangeCharactersRange方法中添加了逗号。 这是swift的等价物 let formatter = NSNumberFormatter() formatter.numberStyle = NSNumberFormatterStyle.DecimalStyl

我使用的UITextField具有十进制键盘。因此,用户只能键入数字。我想文本字段自动添加逗号,每千个用户类型。这样用户就可以很容易地识别他们输入了多少内容。有没有一个共同的方法来做到这一点

答案应该有帮助。他们在shouldChangeCharactersRange方法中添加了逗号。 这是swift的等价物

let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
let formattedNum = formatter.stringFromNumber(10000000)
textField.text = formattedNum
这是参考资料。下面是转换后的swift代码。将委托设置为textField并实现下面的委托方法

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    let cs = NSCharacterSet(charactersInString: "0123456789").invertedSet
    let filtered = string.componentsSeparatedByCharactersInSet(cs)
    let component = filtered.joinWithSeparator("")
    let isNumeric = string == component

    // check for input string is numeric value or either a number not a string or character.
    if isNumeric {
        let formatter = NSNumberFormatter()
        formatter.numberStyle = .DecimalStyle
        formatter.maximumFractionDigits = 10

        let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
        let numberWithOutCommas = newString.stringByReplacingOccurrencesOfString(",", withString: "")
        let number = formatter.numberFromString(numberWithOutCommas)
        if number != nil {
            let formattedString = formatter.stringFromNumber(number!)
            print(number)
            print(formattedString)
            textField.text = formattedString
        } else {
            textField.text = nil
        }
    }
    return false
}

我对iOS相当陌生。我不完全理解。为什么会有1000万人?我还试着输入第二行代码,但Xcode并没有接收到它。