Material Textfield 在设置错误文本时崩溃

Posted

技术标签:

【中文标题】Material Textfield 在设置错误文本时崩溃【英文标题】:Material Textfield crash on setting error text 【发布时间】:2019-02-23 02:00:40 【问题描述】:

我正在使用 CosmicMind 库进行材料设计,我正在尝试设置基本的 textfields 并进行一些错误检查,但文档不是很好。

我的文本字段设置如下:

@IBOutlet weak var userNameField: ErrorTextField!

userNameField.placeholder = "Enter Username"
userNameField.delegate = self
userNameField.error = "Text is too long" // App Crashes here
userNameField.errorColor = Color.red.base

应用程序因EXC_BAD_ACCESS 而崩溃

我这样验证我的字段:

func textField(textField: TextField, didChange text: String?) 

    if textField == userNameField 

        if validateUsername(text: textField.text!) 
            userNameField.isErrorRevealed = true
         else 
            userNameField.isErrorRevealed = false
        
    

即使我删除该行,应用程序也会在 userNameField.isErrorRevealed = true 上崩溃。

【问题讨论】:

你能分享我们可以复制的演示项目吗? 在该行放一个断点并在 consol 中 po usernamefield 并检查你得到了什么 【参考方案1】:

我已经使用您正在使用的相同库创建了以下代码,这些代码运行良好。我以编程方式创建了textField

import UIKit
import Material

class ViewController: UIViewController 

    fileprivate var emailField: ErrorTextField!

    override func viewDidLoad() 
        super.viewDidLoad()
        view.backgroundColor = Color.grey.lighten5

        emailField = ErrorTextField()
        emailField.placeholder = "Email"
        emailField.error = "Text is too long"
        emailField.delegate = self

        self.view.layout(emailField).height(40).width(200).centerVertically().centerHorizontally()
    


extension ViewController: TextFieldDelegate 

    public func textFieldDidEndEditing(_ textField: UITextField) 
        (textField as? ErrorTextField)?.isErrorRevealed = false
    

    public func textFieldShouldClear(_ textField: UITextField) -> Bool 
        (textField as? ErrorTextField)?.isErrorRevealed = false
        return true
    

    func textFieldShouldReturn(_ textField: UITextField) -> Bool 
        (textField as? ErrorTextField)?.isErrorRevealed = true
        return true
    

查看此示例项目:Sample Project

希望对你有帮助。

【讨论】:

以上是关于Material Textfield 在设置错误文本时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cosmicmind/Material TextField 将 TextField 的分隔线也放置在 LeftView 下

设置TextField高度material-ui

如何在错误和焦点上更改 Material-UI TextField 底部和标签颜色

错误:膨胀类 com.google.android.material.textfield.TextInputLayout

一个简单的问题:Material-UI TextField,如何在不同的断点设置不同的字体大小?

设置 TextField InputProps 时,Material-UI 自动完成功能不起作用