I am trying to format the textfield's input in currency standard format using its delegate method but the found solution is not upto the desire. I also found some solutions but nowhere i found the expected solution.
Requirements:
UITextField's Input: 300000
Getting: 30,0000
Desired Output: 300,000
Using code:
//MARK:- textfield delegate method
func textField(_ textField: UITextField, shouldChangeCharactersIn range:NSRange, replacementString string: String) -> Bool {
guard let textFieldHasText = (textField.text), !textFieldHasText.isEmpty else {
//early escape if nil
return true
}
if textField == self.reqCourps || textField == self.presentInvest{
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
//remove any existing commas
let textRemovedCommma = textFieldHasText.replacingOccurrences(of: ",", with: "")
//update the textField with commas
let formattedNum = formatter.string(from: NSNumber(value: Int(textRemovedCommma)!))
textField.text = formattedNum
}
guard let text = textField.text else { return true }
let newLength = text.characters.count + string.characters.count - range.length
return newLength <= 12 // Bool
}
When i use .currency
method it crashes the app also:
formatter.numberStyle = .currency