ios - 用于电子邮件的 UITableview 单元格验证

标签 ios swift

我想验证 UItable 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 的电子邮件。现在我想在按下发送按钮后验证该字段。我该怎么做..??

最佳答案

您只需在包含该文本字段的 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
    }

}

关于ios - 用于电子邮件的 UITableview 单元格验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42713569/

相关文章:

iphone - iPad 2x 模式和 iPhone4 Retina 显示屏(针对开发者)之间有什么区别吗?

swift - 示例 AVCAM - Swift Xcode v9

ios - translatesAutoresizingMaskIntoConstraints 阻止 UIButton Action swift

swift - 什么减少(_ :_:) function do in Swift?

ios - 线程 1 : Signal SIGABRT In AppDelegate when you run it

javascript - 从 objective-c 中的 WKwebview 中删除 <div><br>

ios - 如何避免在 iPhone 中滚动 UITableView 时标签、按钮重复

ios - 链接多对多的对象应该都写在 Realm 中吗?

ios - 动态调整单元格大小时出错

swift - Keras 层 '<class ' keras.layers.core.Lambda'>' 不支持。将 keras 模型 .h5 转换为 .mlmodel