我有一个仅接受数值的文本字段。我想知道如何才能包含输入单个“.”的功能。来表示小数点。
我有以下代码:
class ViewController: UIViewController, UITextFieldDelegate {
var formatter: NSNumberFormatter!
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
return string == "" || Double(string) != nil
}
override func viewDidLoad() {
amountTextField.delegate = self
// Initialize the formatter; minimum value is set to zero; style is Decimal.
formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
formatter.minimum = 0
}
}
最佳答案
您必须使用此文本字段委托(delegate)方法:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { // return NO to not change text
let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
if newString.characters.count > 0 {
let scanner: NSScanner = NSScanner(string:newString)
let isNumeric = scanner.scanDecimal(nil) && scanner.atEnd
return isNumeric
} else {
return true
}
}
关于ios - shouldChangeCharactersInRange 接受单个 '.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36772857/