UITextField函数在UITextView中不可用

时间:2018-08-29 13:56:21

标签: ios swift uitextview

在使用textView时应用textField函数时遇到问题。

以前,我使用的是textField,下面的代码运行流畅,没有任何问题。现在,我决定使用textView代替textField,因此想将每个textField更改为textView,但不知道如何将textField.addtarget()函数实现为textView。我想要的是,最初,当textView为空时,未启用按钮颜色,但是当其中包含文本时,按钮颜色应为蓝色。

我找不到包含#selector的适当函数来在textView函数中调用我的主要函数。我将不胜感激。提前非常感谢您!

 override func viewDidLoad() {
    super.viewDidLoad()
    buttonColor.isEnabled = false    
    handleTextField()
}


func handleTextField() {

    textField.addTarget(self, action: #selector(self.textFieldDidChange), for: UIControlEvents.editingChanged)
}   // used to call the main function



@objc func textFieldDidChange() {

if (textView.text != ""){
        buttonColor.setTitleColor(UIColor.blue, for: UIControlState.normal)
        buttonColor.isEnabled = true
        return
    }
    buttonColor.setTitleColor(UIColor.lightGray, for: UIControlState.normal)
    buttonColor.isEnabled = false
} 

1 个答案:

答案 0 :(得分:0)

您在UITextViewDelegate中有一个名为textViewDidChange(_:)的代表。

class ViewController: UIViewController, UITextViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        yourTextView.delegate = self
        print(locationName)   // not important
        buttonColor.isEnabled = false    // not important
    }

    //Your other code

    func textViewDidChange(textView: UITextView) {
        if (textView.text != ""){
            buttonColor.setTitleColor(UIColor.blue, for: UIControlState.normal)
            buttonColor.isEnabled = true
            return
        }
        buttonColor.setTitleColor(UIColor.lightGray, for: UIControlState.normal)
        buttonColor.isEnabled = false
    }
}