gpt4 book ai didi

ios - UITextField 中带有货币符号的点后 2 位小数的限制

转载 作者:行者123 更新时间:2023-11-28 14:59:55 25 4
gpt4 key购买 nike

我需要为 UITextField 设置限制,比如只接受 2 位小数点值并添加自动货币符号。

例如,

23.45 美元 - 正确

但 45.4545 美元 - 错误

45.4545.65 美元 - 错误

45.45 - 错误(如果文本字段有值,应自动添加货币符号)

我达到了小数点后 2 位的限制,但由于货币符号卡住了,我没有得到它。

注意:

(1) 用户在 UITextField 中输入时必须自动添加货币符号

(2) 如果没有值则显示占位符值。(删除货币符号)

(3) UITextField 应该在之后接受 1 个点和 2 个小数点,比如 $67.89

(4) 所有这些条件在 UITextFieldDelegate 方法中应该是可能的。不要使用静态标签或其他东西。

这是我的代码...

 //MARK: - UITextFieldDelegate


func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

isEditingMode = true
switch textField.tag {
case tag_price_txt:
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
formatter.minimumIntegerDigits = 1
formatter.maximumIntegerDigits = 10

//var newString = ""

let aString = textField.text!
let newStr = aString.replacingOccurrences(of: "£", with: "")
textField.text = newStr

let nsString = newStr as NSString?
let newString:String = (nsString?.replacingCharacters(in: range, with: string))!

let expression = "^[0-9]*((\\.|,)[0-9]{0,2})?$"
let regex = try? NSRegularExpression(pattern: expression, options: .caseInsensitive)
let numberOfMatches: Int? = regex?.numberOfMatches(in: newString, options: [], range: NSRange(location: 0, length: (newString.count)))

if numberOfMatches != 0 {

amountTypedString = newString
let newString1 = "\(SymbolOfCurrency.Pound.rawValue)" + amountTypedString
displayAmountString = newString1
//textField.text = newString1
print("assigned value",displayAmountString)
return true
}else{
return false
}

return true
}

enter image description here

输入后应该是这样的:

enter image description here请帮助。提前致谢。

最佳答案

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let dotString = "."
let character = "£"

if let text = textField.text{
if !text.contains(character){
textField.text = "\(character) \(text)"
}
let isDeleteKey = string.isEmpty

if !isDeleteKey {
if text.contains(dotString) {
if text.components(separatedBy: dotString)[1].count == 2 || string == "." {
return false
}
}
}
}
return true
}

关于ios - UITextField 中带有货币符号的点后 2 位小数的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49003390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com