Ios 如何限制和警告Swift4中decimalPad的文本字段输入值?

Ios 如何限制和警告Swift4中decimalPad的文本字段输入值?,ios,swift4,Ios,Swift4,我有一个decimalPad类型的文本字段。但是,如果用户键入“.”。。。我的数据库将出现错误 如果uesr输入上述值,我想提醒“无效输入”语法 当前我的func TEXTFIELD应该删除代码。如何添加代码 func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { if Double(textField.text!) == 0 { let alert = UIAlertCo

我有一个decimalPad类型的文本字段。但是,如果用户键入“.”。。。我的数据库将出现错误

如果uesr输入上述值,我想提醒“无效输入”语法

当前我的func TEXTFIELD应该删除代码。如何添加代码

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
}