Swift NSTextView textDidChange事件

Swift NSTextView textDidChange事件,swift,Swift,我正在做类似的事情: @IBOutlet var textView: NSTextView! override func viewDidLoad() { super.viewDidLoad() textView.delegate = self } func textDidChange(notification: NSNotification) { } 我确实在一开始就添加了“NSTextViewDelegate” 如果“textView”中的文本发生更改,我想设置标签的

我正在做类似的事情:

@IBOutlet var textView: NSTextView!

override func viewDidLoad() {
    super.viewDidLoad()

    textView.delegate = self
}

func textDidChange(notification: NSNotification) {

}
我确实在一开始就添加了“NSTextViewDelegate”

如果“textView”中的文本发生更改,我想设置标签的字符串值

问题是,我的程序将在没有任何错误消息的情况下崩溃(断点位于“fun textDidChange()……”)。即使func textdichange为空,它也会崩溃

我做错什么了吗

谢谢

请参见以下答案:

简而言之,使用
controlTextDidChange:

使用这个,Swift 3

class ViewController: NSViewController, NSTextViewDelegate {

  @IBOutlet var textView: NSTextView!

  override func viewDidLoad() {
    super.viewDidLoad()

    textView.delegate = self

  // NSTextViewDelegate conforms to NSTextDelegate
  func textDidChange(_ notification: Notification) {
    guard let textView = notification.object as? NSTextView else { return }
    print(textView.string)
  }
}
记得吗

  • textDidChange(\uu通知:通知)
  • Swift 3更喜欢
    Notification
    而不是
    NSNotification
  • 设置代理
    textView.delegate=self

控制台输出可能会有所帮助!@onmyway133的答案是正确的
ControlTextDidChange
仅适用于
NSTextField
。问题是关于
NSTextView