gpt4 book ai didi

Swift:输入时在文本字段中添加逗号和 $

转载 作者:行者123 更新时间:2023-11-28 16:12:01 25 4
gpt4 key购买 nike

我希望用户在 numberPad 的文本字段中输入时看到 $ 和逗号(没有小数点)。以前我得到帮助并使用下面的代码。但客户不会键入小数(仅 Int 值)。

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let oldText = textField.text! as NSString
var newText = oldText.stringByReplacingCharactersInRange(range, withString: string) as NSString!
var newTextString = String(newText)

let digits = NSCharacterSet.decimalDigitCharacterSet()
var digitText = ""
for c in newTextString.unicodeScalars {
if digits.longCharacterIsMember(c.value) {
digitText.append(c)
}
}

let formatter = NSNumberFormatter()
// formatter.usesSignificantDigits = false
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
formatter.locale = NSLocale(localeIdentifier: "en_US")
let numberFromField = (NSString(string: digitText).doubleValue) / 100

newText = formatter.stringFromNumber(numberFromField)

textField.text = String(newText)

return false

}

打字的时候总是从小数点后第二个单位开始,如何通过编辑代码去掉“.00”,让它从单位开始?试了很久,先谢过了。

最佳答案

首先,您得到了一些糟糕的建议。您不应使用 shouldChangeCharactersInRange 来更改文本字段中的字符。这是为了检查输入的字符是否对该字段有效。如果用户输入数字或删除,您在此方法中唯一应该做的是返回 true,否则返回 false。 (请记住,用户可能正在使用外部键盘,因此仅仅打开键盘并不足以阻止非数字输入。)

相反,您应该使用连接到字段的 EditingChanged 事件的 @IBAction。在这个方法中,您应该更新文本。

@IBAction func editingChanged(sender: UITextField) {
let digits = sender.text?.digitsOnly ?? "0"
sender.text = "$\(digits).00" // If I understand what you want.
}

下面的扩展应该在你的代码库中的某个地方。它通常很有用,所以将它存储在要点或其他东西中,您可能会在未来的项目中需要它。

extension String {
var digitsOnly: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet).joinWithSeparator("")
}
}

您必须确保 IBAction 附加到 EditingChanged 事件:

enter image description here

对于 Swift 4x

extension String {
var digitsOnly: String {
return components(separatedBy: NSCharacterSet.decimalDigits.inverted).joined(separator: "")
}
}

关于Swift:输入时在文本字段中添加逗号和 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39442142/

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