如何快速调用此函数?

Posted

技术标签:

【中文标题】如何快速调用此函数?【英文标题】:how to call this function in swift? 【发布时间】:2018-05-23 02:32:45 【问题描述】:

我有这个函数但问题是我不知道如何在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
    

【问题讨论】:

这是一个 UITextField 的委托函数,每次在 UITextField 的文本发生变化之前都会调用它,以便您确定是否应该发生变化。通常不需要显式调用它,但如果你真的这样做了,那么只需按照方法需要传入 textField、范围和替换字符串。 如果你遇到的问题是方法没有被调用,那么它应该仔细检查你的这个类是否是一个 UITextField 委托并且 nameTextField.delegate 设置为这个类的一个实例。跨度> 您认为为什么需要调用此文本字段委托方法?您不应该自己调用它。请说明你的目标。 您可以手动调用它(通常不会),但您必须先了解委托模式的工作原理。 【参考方案1】:

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

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

这个特殊的方法是问你“我应该把这个范围的文本改成这个替换字符串吗?”在方法中你做了一些逻辑并返回true(你回答“是”)。

每当文本字段的当前文本发生变化时,都会调用此方法来询问您“这部分文本是否真的应该改变?”。

文本字段会调用这个方法,所以不用担心。您唯一应该做的就是将self 设置为delegate

namaTextField.delegate = self

【讨论】:

【参考方案2】:

它是textField Delegate方法,每次当你试图改变TextField中的文本时,这个方法在改变之前调用,这样你就可以选择天气是否改变。

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

【讨论】:

以上是关于如何快速调用此函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何快速从另一个控制器调用函数

如何执行此函数调用

如何在 cython 中调用此函数?

如何快速制作一个闹钟,它会在特定时间调用一个函数来启动音频流?

如何将纬度和经度传递给另一个函数 - 快速定位

异步请求积压可视化|如何 1 分钟内快速定位函数计算积压问题