如何在swift中调用此函数?

时间:2018-05-23 02:32:46

标签: ios swift uitextfielddelegate

我有这个功能,但问题是我不知道如何在super.viewDidLoad上调用此函数

  func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        if let text = namaTextField.text {
            if let floatingLabelTextField = textField as? SkyFloatingLabelTextField {
                if(text.characters.count < 3 || !text.contains("@")) {
                    floatingLabelTextField.errorMessage = "Invalid email"
                }
                else {
                    // The error message will only disappear when we reset it to nil or empty string
                    floatingLabelTextField.errorMessage = ""
                }
            }
        }
        return true
    }

2 个答案:

答案 0 :(得分:0)

它是textField Delegate方法,每次当你尝试在TextField中更改文本时,此方法在更改之前调用,因此可以选择是否进行更改。

根据我的经验,你不能自己打电话。

答案 1 :(得分:0)

这看起来像UITextFieldDelegate的委托方法。您的视图控制器类应符合UITextFieldDelegate

VC不应该调用文本字段委托方法。它们应该由文本字段调用。

这种特殊方法要求您“我应该将此范围的文本更改为此替换字符串吗?”并且在方法中你做了一些逻辑并返回true(你回答“是”)。

只要文本字段的当前文本发生变化,就会调用此方法,询问“这部分文本是否真的会发生变化?”。

文本字段将调用此方法,因此不必担心它。您应该做的唯一事情是将self设置为delegate

namaTextField.delegate = self