移动到下一个文本字段后立即检查emali验证

时间:2017-01-08 15:03:02

标签: ios swift

我有UserEmailId的文字字段。在UserEmailId下方,我有其他文字字段。我不想在点击注册按钮后验证电子邮件ID,我想在我点击进入并移动到下一个文本字段后立即检查验证。

我只知道在填写完所有字段后如何进行验证。请在输入电子邮件地址后立即转到下一个文本字段,建议如何验证。

@IBOutlet weak var emailText: UITextField!

@IBAction func logIn(sender: AnyObject)
{    
    let validLogin = isValidEmail(emailText.text)    
    if validLogin
        println("User entered valid input")    
    else     
        println("Invalid email address")    
}

func isValidEmail(testStr:String) -> Bool 
{    
    let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"    
    let range = testStr.rangeOfString(emailRegEx, options:.RegularExpressionSearch)    
    let result = range != nil ? true : false    
    return result
}

3 个答案:

答案 0 :(得分:2)

最好的方法是在以下委托方法func textFieldShouldEndEditing(UITextField)&中添加验证方法。 func textFieldDidEndEditing(UITextField)在委托方法中添加if条件以检查正在编辑的文本字段,然后添加验证

你有没有意见,或者我会在这里添加编码样本

答案 1 :(得分:2)

假设您有两个文本字段。一个用于电子邮件地址,另一个用于密码将emailTextField的标记设置为0,将passwordTextField的标记设置为1.现在您要做的是在文本字段结束编辑后立即进行验证。以下代码应指向正确的方向。将UITextFieldDelegate添加到您的班级,不要忘记将文本字段的代理设置为自己。

func textFieldDidEndEditing(_ textField: UITextField) {
    if textField.tag == 0{
        if isValidEmail(testStr:textField.text!){
            //Do your stuff
        }
        else{
            //Do something else
        }
    }
    else if textField.tag == 1{
        // Do your other validation
    }
}

答案 2 :(得分:0)

电子邮件检查功能返回true或false

func isValidEmail(text : String) -> Bool {
        let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"

        let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
        return emailTest.evaluate(with: text)
    }

TextFields委托

func textFieldDidEndEditing(_ textField: UITextField) {
    if textField == txtEmail{
        if self.isValidEmail(text:textField.text ?? ""){
            //Valid Email
        }
        else{
            //Invalid Email
        }
    }

}