如何在 Swift 中的 UITextField 下显示错误

Posted

技术标签:

【中文标题】如何在 Swift 中的 UITextField 下显示错误【英文标题】:How to display error under UITextField in Swift 【发布时间】:2018-11-01 13:22:00 【问题描述】:

我想在 UItextfield 下显示错误,并且文本字段的边框颜色变为红色。 这该怎么做?非常感谢

【问题讨论】:

到目前为止你尝试过什么?这并不难。您通常如何显示文本。在这里也做同样的事情。您可以通过谷歌搜索轻松了解如何更改边框颜色。 您可以通过在UITextField 下添加UILabel 来做到这一点,例如如果您的UITextField 未完成验证,则将错误文本设置为UILabel,或者如果验证则设置"" 文本UILabel 或者如果您不想这样做,那么您可以实现许多现成的库。 @RakeshaShastri 就这么简单。我只是想到内置函数可以帮助我做到这一点。抱歉,我只是 Swift 的初学者 @VũTinhPhan 上面的评论解释了你需要做什么。尽管您可以更改他所说的保持标签始终存在的位置。我建议您在必要时添加和删除标签。 @Kuldeep 谢谢 【参考方案1】:

旁注:您可以使用外部库来执行我将要向您展示的内容。但是,我相信对于刚接触 Swift 的人来说,这段代码可以提供一些关于正确使用该语言进行移动开发的见解。此外,过度使用外部库通常不是好的做法,因为当添加更多依赖项时,您的项目会增加大小,从而导致编译速度变慢并占用设备上的更多内存。尽可能使用 Swift 的标准库和内置功能。

好的,所以我们必须首先设置一条错误消息。这很容易通过创建一个新的UILabel 来完成。我不知道您是否使用故事板来创建 UI 元素,但在下面的代码中,我只是假设您以编程方式创建了所有内容。

注意如果不满足某个条件(在这种情况下,如果@ 987654325@ 为空)。

另外,请注意我如何使用UITextFieldDelegate 的方法didBeginEditing(...) 来重置textField 的边框颜色并再次隐藏errorMessage

class viewController: UIViewController, UITextFieldDelegate 
    private let textField = UITextField()
    private let errorMessage = UILabel()
    private let submitButton = UIButton()

    override viewDidLoad() 
        super.viewDidLoad()

        /* setup your UI elements here */
        setupTextField()
        setupErrorMessage()
        setupSubmitButton()
    

    func setupTextField() 
        /* setup your text field here (you did this already) */
    

    func setupErrorMessage() 

        /* Here, I am using AutoLayout to lay out the errorMessage on the screen. 
           If you used storyboard, delete every line in this function except where 
           we set the message to hidden */

        errorMessage.translatesAutoResizingMaskIntoConstraints = false
        errorMessage.text = "Error Message"
        errorMessage.textColor = .red
        errorMessage.isHidden = true
        self.addSubView(errorMessage)

        NSLayoutConstraints.activate([
                    textField.leadingAnchor.constraint(equalTo: textField.leadingAnchor),
                    textField.topAnchor.constraint(equalTo: textField.bottomAnchor, constant: 10.0)
        ])
    

    func setupSubmitButton() 
        /* setup your submit button here (you did this already) */
        submitButton.addTarget(self, action: #selector(submitButtonPressed(_ :)), for: .touchUpInside)
    

    @objc func submitButtonPressed() 
        if textField.text.isEmpty 
            errorMessage.isHidden = false
            textField.layer.borderColor = .red
        
    

    /* use a UITextFieldDelegate method to change the textField's border color 
       to blue again after the user has corrected the mistake 
       (for example, after the user starts typing into the textField again) */
    func textFieldDidBeginEditing(_ textField: UITextField) 
        textField.layer.borderColor = .blue
        errorMessage.isHidden = true
    

【讨论】:

以上是关于如何在 Swift 中的 UITextField 下显示错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 2.0 中只允许 UITextfield 中的某些数字集

如何比较 Swift 中的字符?我有带有文本和 UITextField 的 UILabel

如何使我在 UIAlertController 内的 UITextField 中输入的数据通过 Swift 中的重置持续存在?

如何在 Swift 中创建 UITextField 对象数组?

如何使用单个 swift 文件自定义应用程序中的所有 UITextField

如何在 Swift 中使用 UITextField 从图像中提取特定文本?