当文本视图为空时按钮被禁用,否则启用

the button is disabled when text view is empty else is enabled

我正在开发笔记应用程序,当文本视图为空时,应该禁用完成按钮,这样用户就无法将空笔记保存到数据库中,否则应该启用该按钮。

下面是我的代码,我的尝试失败了;我该如何解决这个问题?

 @IBOutlet weak var textView: UITextView!
 @IBOutlet weak var done: UIBarButtonItem!

 override func viewDidLoad() {
        super.viewDidLoad()

        title = note?.text
        if (self.textView.text.isEmpty){
            done.enabled = false
        }
        if let noteContent = note

        {
            textView.text = noteContent.text
        }

         self.navigationController!.toolbarHidden = false;
    }

  func textViewShouldBeginEditing(textView: UITextView) -> Bool{
done.enabled = true

    return done.enabled
}

尝试根据您的目的使用其他委托方法。这是例子:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var button: UIButton!
    @IBOutlet weak var textView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        textView.delegate = self

        if (textView.text.isEmpty) {
            button.enabled = false
        }
    }
}

extension ViewController: UITextViewDelegate {

    func textView(textView: UITextView, range: NSRange, replacementText text: String) -> Bool
    {
        if (!textView.text.isEmpty) {
            button.enabled = true
        } else {
             button.enabled = false
        }
        return true
    }
}
  1. 使您的视图控制器符合 UITextViewDelegate 协议
  2. 在 Interface Builder 中,将文本视图上的 delegate 连接到视图控制器。
  3. 将以下函数添加到您的视图控制器:

func textViewDidChange(textView: UITextView) {
    if textView == self.textView {
        self.doneButton.enabled = !textView.text.isEmpty
    }
}

textViewDidChange 方法中试试这个:

yourBarButtonItem.isEnabled = !(yourTextField.text?.isEmpty ?? false)