0

I am using the CosmicMind library for Material design and I am trying to set up basic textfields with some error checking but the documentation is not very good.

I have set up my text fields like the following:

@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

App crashes with EXC_BAD_ACCESS

I validate my field like this:

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

    if textField == userNameField {

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

Even if I remove that line, app crashes on userNameField.isErrorRevealed = true too.

Sagar Chauhan
  • 5,715
  • 2
  • 22
  • 56
Nick
  • 228
  • 6
  • 20

1 Answers1

2

I have created following code with same library which are you using, which are working fine. I have create textField programatically.

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
    }
}

See this sample project: Sample Project

I hope this will help you.

Sagar Chauhan
  • 5,715
  • 2
  • 22
  • 56