当我在swift中输入textfield的输入时移动小数点

时间:2016-01-10 09:10:06

标签: ios swift uitextfield

我想在文本字段中输入货币。但我想在输入每个数字后移动小数点。例如

默认值为$ 0.00当我输入2然后它应该显示$ 0.02后我输入4然后它显示$ 0.24我输入9然后它应该显示$ 2.49我输入9然后它应显示$ 24.99

目前我正在尝试更新编辑已更改上的文本字段,如下所示

@IBAction func currencyTapped(sender: UITextField) {

    let formatter = NSNumberFormatter()

    formatter.minimumIntegerDigits = 1

    formatter.minimumFractionDigits = 2

    formatter.maximumFractionDigits = 2

    formatter.usesGroupingSeparator = true

    if let str = sender.text {

        if let num = Double(str) {

            sender.text = formatter.stringFromNumber(num)

        }

    }

}

如何根据需要更改代码以输入值?

1 个答案:

答案 0 :(得分:1)

你可以做一些事情,比如拥有实际小数位的索引,当用户键入数字时递增此索引,并在删除某些内容时递减它。然后每次根据输入输入或删除某些内容,每次输入更改时,重新加载它以设置格式化的字符串。

override func viewDidLoad()
{
    super.viewDidLoad()

    self.index = 0
    self.oldValue = ""
    self.newValue = ""
    self.textField.addTarget(self, action: textFieldDidChange, forControlEvents: UIControlEvents.ValueChanged)
}

func textFieldDidChange(textField: UITextField)
{
    self.newValue = textField.text
    if self.newValue.characters.count > self.oldValue.characters.count
    {
        self.index++
    }
    else
    {
        self.index--
    }
    textField.text = //Formated string according to index
    self.oldValue = self.newValue
}