2016-01-10 87 views
0

我想在文本字段中輸入貨幣。但是我想在輸入每個數字後移動小數點。例如移動小數點,因爲我在swift中輸入到textfield的輸入

默認值爲爲$ 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) 

     } 

    } 

} 

以更新編輯文本框更改如何更改代碼輸入值,因爲我想?

+0

將輸入的數字當作美分並在顯示時除以100可能更容易 – vadian

+0

我試過這種方法。它適用於第一次輸入。但是對於下一個輸入它是0.088。另外刪除單個號碼也很困難。 –

+0

將格式器的樣式設置爲小數樣式 – vadian

回答

0

你可以做一些事情,比如有一個實際小數位的索引,當用戶鍵入一個數字時增加這個索引,當他刪除某個數時減少它。然後每當他輸入或刪除一些根據輸入和每次輸入更改時,重新加載它來設置您格式化的字符串。

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 
} 
+0

好的嘗試,但字符數爲0.02,0.24和2.29保持不變(3)。所以我不能用你的答案。 –

+1

如果你有0.02,並且用戶在文本框中鍵入4,你將有0.024和'「0.02」.characters.count <「0.024」.characters.count' – Aeradriel