我有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
}
答案 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
}
}
}