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 下
如何在错误和焦点上更改 Material-UI TextField 底部和标签颜色
错误:膨胀类 com.google.android.material.textfield.TextInputLayout