Я хочу отформатировать свой UITextField, указав $
слева при вводе суммы.
Пока что мой код делает, когда я ввожу, пусть говорит, что $5.65
это то, как он вводится: $0.05
-> $0.56
-> $5.65
Я хочу, чтобы это было не справа налево, а слева направо, вот так: $5
-> $5.
-> $5.6
-> $5.65
Но я хочу ограничить его только двумя десятичными знаками, знак доллара находится слева, и вы не можете вводить любые другие символы (например:!, @, #,$,%, ^, A-Z ')
Это то, что у меня сейчас:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let text: NSString = (textField.text ?? "") as NSString
let finalString = text.replacingCharacters(in: range, with: string)
// 'currency' is a String extension that doews all the number styling
amuTextField.text = finalString.currency
// returning 'false' so that textfield will not be updated here, instead from styling extension
return false
}
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.characters.count), withTemplate: "")
let double = (amountWithPrefix as NSString).doubleValue
number = NSNumber(value: (double / 100))
return formatter.string(from: number)!
}