Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在swift中调用此函数?_Ios_Swift_Uitextfielddelegate - Fatal编程技术网

Ios 如何在swift中调用此函数?

Ios 如何在swift中调用此函数?,ios,swift,uitextfielddelegate,Ios,Swift,Uitextfielddelegate,我有这个函数,但问题是我不知道如何在super.viewDidLoad func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { if let text = namaTextField.text { if let floatingLabelTextF

我有这个函数,但问题是我不知道如何在
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
    }
func textField(textField:UITextField,shouldChangeCharactersRange:NSRange,replacementString:string)->Bool{
如果let text=namaTextField.text{
如果让floatingLabelTextField=textField作为?SkyFloatingLabelTextField{
如果(text.characters.count<3 | |!text.contains(“@”)){
floatingLabelTextField.errorMessage=“无效电子邮件”
}
否则{
//只有当我们将错误消息重置为nil或空字符串时,错误消息才会消失
floatingLabelTextField.errorMessage=“”
}
}
}
返回真值
}

这是textField委托方法,每次尝试更改textField中的文本时,此方法都会在更改前调用,以便您可以选择是否更改天气


根据我的经验,您不能自己调用它。

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

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

这个特定的方法询问您“我是否应该将这个文本范围更改为这个替换字符串?”在这个方法中,您执行了一些逻辑并返回了
true
(您回答“是”)

每当文本字段的当前文本发生更改时,将调用此方法,以询问您“这部分文本是否真的发生了更改?”

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

namaTextField.delegate = self

这是UITextField的一个委托函数,每次在UITextField的文本发生更改之前调用它,以确定是否应该发生更改。通常不需要显式调用它,但如果确实需要,则只需传入textField,方法所需的范围和替换字符串。如果您遇到问题,即方法未被调用,则只需重新检查您的此类是否为UITextField委托,以及nameTextField.delegate是否设置为此类的实例。为什么您认为需要调用此文本字段委托方法?你不应该自己称呼它。请解释您的目标。您可以手动调用它(通常不这么做),但您必须先了解委托模式的工作原理。