You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不刷新TableView时随TextField状态修改其边框颜色?

解决TextField边框颜色随响应状态变化的问题

可以通过UITextFieldDelegate的代理方法直接监听TextField的编辑状态变化,无需刷新TableView就能修改边框颜色,具体实现如下:

1. 实现编辑状态监听的代理方法

在你的UITextFieldDelegate扩展中添加两个关键方法,分别处理开始编辑(成为firstResponder)和结束编辑(失去响应)的场景:

extension ChangePasswordViewController: UITextFieldDelegate {
    func textFieldDidBeginEditing(_ textField: UITextField) {
        guard let roundTextField = textField as? RoundTextField else { return }
        // 成为firstResponder时设置边框为黑色
        roundTextField.layer.borderColor = UIColor.black.cgColor
    }
    
    func textFieldDidEndEditing(_ textField: UITextField) {
        if textField.tag == 0 {
            viewModel.pwValue = textField.text ?? ""
        } else {
            viewModel.confirmPwValue = textField.text ?? ""
        }
        guard let roundTextField = textField as? RoundTextField else { return }
        // 失去响应时恢复为灰色
        roundTextField.layer.borderColor = UIColor.gray.cgColor
    }
}

2. 设置初始边框颜色与代理

在viewDidLoad中完成初始边框颜色设置,并绑定TextField的代理:

override func viewDidLoad() {
    super.viewDidLoad()
    hideKeyboardWhenTappedAround()
    
    newPasswordTextField.tag = 0
    checkingNewPasswordTextField.tag = 1
    
    // 设置初始边框颜色与宽度(宽度必须大于0才会显示边框)
    newPasswordTextField.layer.borderColor = UIColor.lightGray.cgColor
    checkingNewPasswordTextField.layer.borderColor = UIColor.lightGray.cgColor
    newPasswordTextField.layer.borderWidth = 1.0
    checkingNewPasswordTextField.layer.borderWidth = 1.0
    
    // 绑定代理
    newPasswordTextField.delegate = self
    checkingNewPasswordTextField.delegate = self
    
    configureNotificationObservers()
}

3. 额外说明

  • 这种方式直接通过系统代理监听编辑状态,和你当前textColor自动变化的逻辑一致,都是直接操作TextField的属性,完全不需要刷新TableView;
  • 如果后续想通过ViewModel驱动状态,可以给ViewModel添加对应TextField的编辑状态属性(比如isNewPasswordEditing),通过发布订阅的方式通知ViewController修改边框颜色,但当前场景下用代理方法更简洁高效;
  • 确保你的RoundTextField没有在其他地方覆盖layer.borderColor属性,避免冲突。

内容的提问来源于stack exchange,提问作者eeuin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 05:37:09