Сбой текстового поля материала при установке текста ошибки - PullRequest
0 голосов
/ 23 февраля 2019

Я использую библиотеку 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 тоже.

1 Ответ

0 голосов
/ 23 февраля 2019

Я создал следующий код с той же библиотекой, которую вы используете, и которая работает нормально.Я создал 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
    }
}

Смотрите этот пример проекта: Пример проекта

Надеюсь, это поможет вам.

...