仅允许 UITextField 输入电子邮件 Swift iOS8

Allow only email for UITextField input Swift iOS8

我尝试要求用户使用他们的电子邮件地址作为用户名注册会员。 在用户名的文本字段中,我将键盘类型更改为 "Email Address"。但是,如何限制用户在文本字段中输入电子邮件地址。

感谢您的宝贵时间。

虽然是重复的,但我可以建议使用 SSValidationTextField 这是我以前写的 API。 示例代码类似于

var phoneValidationTextField = SSValidationTextField(frame: CGRectMake(200, 200, 150, 50))
phoneValidationTextField.validityFunction = self.isValidPhone
phoneValidationTextField.delaytime = 0.5
phoneValidationTextField.errorText = "Incorrect Format"
phoneValidationTextField.successText = "Valid Format"
phoneValidationTextField.borderStyle = UITextBorderStyle.RoundedRect
self.addSubview(phoneValidationTextField)

典型的有效性函数看起来像

func isValidEmail(stringValue: String) ->Bool {
    let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}"
    let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
    return emailTest.evaluateWithObject(stringValue)
}

它负责其余的验证工作。

您可以使用此代码验证电子邮件地址:

@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
}