可访问电子邮件的电池验证



我想验证usitaite view单元格上的emailID。因此,我已经完成了:

   let cell = (tableView.dequeueReusableCellWithIdentifier("QuestionWithEmailField", forIndexPath: indexPath) as? QuestionWithEmailField)!
            cell.model = model
            cell.indexPath = indexPath
            cell.TexitFieldEmail.delegate = self
            cell.lblEmail.text = model.labelText
            return cell

此单元格用于电子邮件,还有其他用于电话号码和邮政编码的单元格。对于不同类型的字段有不同的细胞。现在,我如何验证电子邮件和使用 didendeditingTextfield

在我的QuestionWitheMailField.swift中,我做到了:

 @IBOutlet weak var lblEmail: UILabel!
@IBOutlet weak var TexitFieldEmail: UITextField!
  override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }
    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        // Configure the view for the selected state
    }
//email validations functions
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
}
@IBAction func DidEndEditingTextField(sender: AnyObject) {
    let validEmailAddress = isValidEmail(TexitFieldEmail.text!)
    if validEmailAddress
    {
     print("Valid Email Address")
    }
    else{
        print("InvalidAddrss")
    }
}

,但我无法验证此uitextfield的电子邮件。现在,我想在按下发送按钮后验证该字段。

您只需要验证包含Textfield的TableviewCell

您可能会注意到,在键盘上按return时,didEndEditing不会被调用。因此,您必须使用UITextFieldDelegate中的textFieldShouldReturn来触发didEndEditing

extension String {
    var isEmail: Bool {
        do {
           let regex = try NSRegularExpression(pattern:"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}", options: .caseInsensitive)
           return regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.characters.count)) != nil
        }
       catch {
          return false
       }
    }
}

class TextFieldTableViewCell: UITableViewCell, UITextFieldDelegate {
    @IBOutlet weak var textField: UITextField!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        textField.delegate = self
    }
    @IBAction func didEndEditing(_ sender: UITextField) {
        if sender.text!.isEmail {
            print("YES")
        } else {
            print("NO")
        }
    }
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.endEditing(true)
        return false
    }
}

最新更新