Ios 如何限制和警告Swift4中decimalPad的文本字段输入值?
我有一个decimalPad类型的文本字段。但是,如果用户键入“.”。。。我的数据库将出现错误 如果uesr输入上述值,我想提醒“无效输入”语法 当前我的func TEXTFIELD应该删除代码。如何添加代码Ios 如何限制和警告Swift4中decimalPad的文本字段输入值?,ios,swift4,Ios,Swift4,我有一个decimalPad类型的文本字段。但是,如果用户键入“.”。。。我的数据库将出现错误 如果uesr输入上述值,我想提醒“无效输入”语法 当前我的func TEXTFIELD应该删除代码。如何添加代码 func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { if Double(textField.text!) == 0 { let alert = UIAlertCo
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
if Double(textField.text!) == 0 {
let alert = UIAlertController(title: "Notice", message: "The input value can't be 0.", preferredStyle: .alert)
let ok = UIAlertAction(title: "OK", style: .default)
alert.addAction(ok)
self.present(alert, animated: false)
return false
}
return true
}
我从你那里得到一份推荐信
首先向控制器添加UITextFieldDelegate
,如下所示
class ViewController: UIViewController, UITextFieldDelegate
将此添加到viewDidLoad中
yourTextField.delegate = self
然后
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let isNumber = CharacterSet.decimalDigits.isSuperset(of: CharacterSet(charactersIn: string))
let withDecimal = (
string == NumberFormatter().decimalSeparator &&
textField.text?.contains(string) == false
)
return isNumber || withDecimal
}
步骤:1
class ViewController: UIViewController, UITextFieldDelegate
步骤:2(ViewDidLoad)
步骤:3
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.characters.count > 0 {
var allowedCharacters = CharacterSet.alphanumerics
let unwantedStr = string.trimmingCharacters(in: allowedCharacters)
return unwantedStr.characters.count == 0
}
return true
}
这也适用于将字符串粘贴到文本字段中
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.characters.count > 0 {
var allowedCharacters = CharacterSet.alphanumerics
let unwantedStr = string.trimmingCharacters(in: allowedCharacters)
return unwantedStr.characters.count == 0
}
return true
}