Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to input currency format on a text field (from right to left) using Swift?

I have a number let’s say 0.00.

  • When the user taps 1. We should have 0.01
  • When the user taps 2. We should display 0.12
  • When the user taps 3. We should display 1.23
  • When the user taps 4. We should display 12.34

How can I do that with Swift?

like image 306
Bolo Avatar asked Apr 21 '15 20:04

Bolo


1 Answers

For Swift 3. Input currency format on a text field (from right to left)

override func viewDidLoad() {     super.viewDidLoad()      textField.addTarget(self, action: #selector(myTextFieldDidChange), for: .editingChanged) }  @objc func myTextFieldDidChange(_ textField: UITextField) {      if let amountString = textField.text?.currencyInputFormatting() {         textField.text = amountString     } }  extension String {      // formatting text for currency textField     func currencyInputFormatting() -> String {              var number: NSNumber!         let formatter = NumberFormatter()         formatter.numberStyle = .currencyAccounting         formatter.currencySymbol = "$"         formatter.maximumFractionDigits = 2         formatter.minimumFractionDigits = 2              var amountWithPrefix = self              // remove from String: "$", ".", ","         let regex = try! NSRegularExpression(pattern: "[^0-9]", options: .caseInsensitive)         amountWithPrefix = regex.stringByReplacingMatches(in: amountWithPrefix, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count), withTemplate: "")              let double = (amountWithPrefix as NSString).doubleValue         number = NSNumber(value: (double / 100))              // if first number is 0 or all numbers were deleted         guard number != 0 as NSNumber else {             return ""         }              return formatter.string(from: number)!     } } 
like image 95
Włodzimierz Woźniak Avatar answered Sep 19 '22 07:09

Włodzimierz Woźniak