gpt4 book ai didi

ios - 更改自定义 UIButton 状态时的 UI 问题

转载 作者:行者123 更新时间:2023-11-28 13:35:35 24 4
gpt4 key购买 nike

我有 2 个 UITextField 和一个自定义 UIButton。我检查 UITextField 是否有值,然后 enable 按钮。如果用户返回并删除其中任何一个中的值,按钮状态将返回到 disabled。我的问题是用户界面。启用时 - 按钮应为白色,标题为紫色,禁用时应为清晰的颜色(作为背景色),标题和边框颜色为浅灰色。这是该 UIButton 的方法:

func authButton() {
layer.cornerRadius = 5
layer.borderWidth = 1
clipsToBounds = true
if state == .normal {
layer.borderColor = UIColor.white.cgColor
backgroundColor = UIColor.white
setTitleColor(Colors.purpleDarker, for: .normal)
}
else if state == .disabled {
layer.borderColor = UIColor.lightText.cgColor
backgroundColor = UIColor.gray
setTitleColor(.lightText, for: .disabled)
}
}

工作正常,直到用户从文本字段中删除内容然后背景保持白色并且标题有点“消失”(或不可见)。它仅在用户点击关键字上的“完成”按钮然后将状态更改为禁用时才有效。

下面是我在 UITextField 中检查这些更改的方式(为两个文本字段都设置了代表):

func handleTextFields() {
emailTextField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
passwordTextField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
}

@objc func textFieldDidChange() {
print("11111")
guard let email = emailTextField.text, !email.isEmpty,
let pass = passwordTextField.text, !pass.isEmpty
else {
loginButton.isEnabled = false
return
}
loginButton.isEnabled = true
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField {
case emailTextField:
passwordTextField.becomeFirstResponder()
case passwordTextField:
passwordTextField.resignFirstResponder()
default:
break
}
return true
}

我做错了什么?

最佳答案

根据您的评论...

移动:

loginButton.authButton()

viewWillLayoutSubviews()viewDidLoad(),然后将您的 textFieldDidChange() 函数更改为:

@objc func textFieldDidChange() {
print("11111")
guard let email = emailTextField.text, !email.isEmpty,
let pass = passwordTextField.text, !pass.isEmpty
else {
loginButton.isEnabled = false
// update your customized "state"
loginButton.authButton()
return
}
loginButton.isEnabled = true
// update your customized "state"
loginButton.authButton()
}

关于ios - 更改自定义 UIButton 状态时的 UI 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56685282/

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