一尘不染

Swift-验证UITextField

swift

我的应用程序中有以下商店:

@IBOutlet var name1: UITextField!

@IBOutlet var name2: UITextField!

@IBOutlet var name3: UITextField!

@IBOutlet var name4: UITextField!

@IBOutlet var newButton: UIButton!

我试图做的是以下几点:

每次用户在这四个值之一中键入内容UITextField或删除内容时,我都要检查是否UITextField为空

如果有任何UITextField空白,则应禁用该按钮。

如果所有UITextField都已设置(不为空),则应启用该按钮。

我的代码:

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

    setButton()

    return true
}

func setButton() {

    let inputValid = checkInput()

    if inputValid {

        newButton.enabled = true

    } else {

        newButton.enabled = false

    }

}

func checkInput() -> Bool {

    let name1Value = name1.text
    let name2Value = name2.text
    let name3Value = name3.text
    let name4Value = name4.text

    if !name1Value.isEmpty && !name2Value.isEmpty && !name3Value.isEmpty && !name4Value.isEmpty {

        return true

    }

    return false

}

好的,它现在可以工作50%。

当我在每个字符中键入一个字符时UITextField,该按钮仍处于禁用状态。

当我向其中任何一个添加第二个UITextField按钮时,按钮将被启用,等等。

谁能帮我这个?


阅读 305

收藏
2020-07-07

共1个答案

一尘不染

或者,您可以使用此方法,每次按下一个键时都会调用此方法:

name1.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)
name2.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)
name3.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)
name4.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)


func textFieldDidChange(textField: UITextField) {
    if name1.text?.isEmpty || name2.text?.isEmpty || name3.text?.isEmpty || name4.text?.isEmpty {
        //Disable button
    } else {
        //Enable button
    }
}
2020-07-07