gpt4 book ai didi

ios - 仅当所有文本字段均已验证成功时才启用登录按钮

转载 作者:行者123 更新时间:2023-11-30 11:40:44 25 4
gpt4 key购买 nike

我想在满足文本字段的所有条件后启用登录按钮。我已通过右舷向两个文本字段添加了 editchange 事件。默认情况下,我向具有红色背景颜色的文本字段添加了一个标签,以指示(错误)一旦用户在文本字段中输入正确的值,那么我需要更改标签颜色为绿色。它不能正常工作。

First

Second

我的整个代码:

import UIKit
import IQKeyboardManagerSwift

class SignInFormViewController: UIViewController , UITextFieldDelegate {

@IBOutlet weak var forgotPasswordButton: UIButton!
@IBOutlet weak var signInButton: UIButton!

// Existing User
@IBOutlet weak var existingEmailAddressTextField: UITextField!
@IBOutlet weak var existingPasswordTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
//Setting text fileds effect
self.makeTextFiledEffect(textField: existingEmailAddressTextField, backColor: UIColor.red, borderColor: UIColor.lightGray)
self.makeTextFiledEffect(textField: existingPasswordTextField, backColor: UIColor.red, borderColor: UIColor.lightGray)

//Disable sing button by default
signInButton.isEnabled = false
}

func makeTextFiledEffect(textField : UITextField, backColor : UIColor, borderColor : UIColor) {
for viewPrevious in textField.subviews{
if viewPrevious.tag == 1000{
viewPrevious.removeFromSuperview()
}
}
let arrowView = UILabel(frame: CGRect(x:0, y: 0, width: 5, height: textField.frame.size.height))
arrowView.tag = 1000
arrowView.backgroundColor = backColor
textField.changeDynamicBorderColor(borderColor: borderColor)
textField.addSubview(arrowView)
}

@IBAction func validateTextField(_ sender: UITextField) {
if sender.text?.count == 1 {
if sender.text?.first == " " {
sender.text = ""
return
}
}
guard
let emaiTextField = existingEmailAddressTextField.text, !emaiTextField.isEmpty && self.validateEmail(emaiTextField)==true ,
let password = existingPasswordTextField.text, !password.isEmpty
else {
self.makeTextFiledEffect(textField: sender, backColor: UIColor.red, borderColor: UIColor.lightGray)
self.signInButton.isEnabled = false
return
}
self.makeTextFiledEffect(textField: sender, backColor: UIColor.green, borderColor: UIColor.lightGray)
signInButton.isEnabled = true

}
@IBAction func signInButtonTapped(_ sender: UIButton) {
print("Tapped")

}



func validateEmail(_ candidate: String) -> Bool {

let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
return NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: candidate)
}
}

extension UITextField
{
func changeDynamicBorderColor(borderColor : UIColor){
self.layer.borderColor = borderColor.cgColor
}
open override func draw(_ rect: CGRect) {
self.layer.cornerRadius = 10.0
self.layer.borderWidth = 1.0
// self.layer.borderColor = UIColor.lightGray.cgColor
self.layer.masksToBounds = true
}
}

您可以找到类似的问题:Enable a button in Swift only if all text fields have been filled out

提前致谢..

最佳答案

请按照以下基本步骤来实现您的目标:-

  • 创建一个函数来执行所有验证(UI 级别或 API 级别或任何验证)。如果任何一个验证失败,则返回 false,否则返回 true
  • loginButton.isEnabled = 上述函数的返回值

关于ios - 仅当所有文本字段均已验证成功时才启用登录按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49318030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com