我正在尝试设置此UIAlertController,以便在输入正确的电子邮件地址之前“注册”按钮不起作用。 (包含一个@符号)。
有关如何执行此操作的任何建议?尝试过其他文章,但解决方案不起作用,Swift newb在这里。
我已包含以下代码:
@IBAction func loginTapped(_ sender: UIButton) {
//The user is not logged in, so prompt for their email address
let loginAlert = UIAlertController(title: "Sign Up For LivNao", message:
"Please enter your email address to join the LivNao study",
preferredStyle: UIAlertController.Style.alert)
loginAlert.addAction(UIAlertAction(title: "Cancel", style:
UIAlertAction.Style.cancel, handler: nil))
loginAlert.addAction(UIAlertAction(title: "Sign Up", style:
UIAlertAction.Style.default, handler: {
(action: UIAlertAction) in
self.handleLogin(loginAlert)
}))
loginAlert.addTextField { (textField : UITextField) in
textField.placeholder = "Enter email"
}
loginAlert.view.setNeedsLayout()
self.present(loginAlert, animated: true, completion: nil)
}
答案 0 :(得分:0)
检查一下。
var signUp: UIAlertAction!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let loginAlert = UIAlertController(title: "Sign Up For LivNao", message: "Please enter your email address to join the LivNao study", preferredStyle: UIAlertController.Style.alert)
let cancel = UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel, handler: nil)
loginAlert.addAction(cancel)
signUp = UIAlertAction(title: "Sign Up", style: UIAlertAction.Style.default, handler: { (action: UIAlertAction) in
//self.handleLogin(loginAlert)
})
loginAlert.addAction(signUp)
loginAlert.addTextField { (textField : UITextField) in
textField.placeholder = "Enter email"
textField.delegate = self
}
signUp.isEnabled = false
loginAlert.view.setNeedsLayout()
self.present(loginAlert, animated: true, completion: nil)
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{
signUp.isEnabled = isValidEmail(testStr: textField.text!) ? true : false
return true;
}
func isValidEmail(testStr: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: testStr)
}