使用 NSTextViewDelegate 和 textViewDidChange 不工作来监听 NSTextView 的变化

Listen for changes to NSTextView with NSTextViewDelegate & textViewDidChange not working

我希望每次用户对我的 NSTextView 进行更改时触发一个函数。我让它在 iOS 应用程序中工作,现在正试图让它在 OS X 应用程序中工作。我为我的 NSTextView 创建了一个出口并编写了以下 Swift 代码:

import Cocoa

class ViewController: NSViewController, NSTextViewDelegate {

    @IBOutlet var textViewOutlet: NSTextView!

    func textViewDidChange(textView: NSTextView) {
        print("Text view changed!")
    }
}

我没有收到任何错误,但我的声明没有打印出来。

应该是textDidChange(notification:)。像这样尝试:

func textDidChange(_ notification: Notification) {
    guard let textView = notification.object as? NSTextView else { return }
    print(textView.string)
}

这应该是没有委托分配的原因。

TextViewOutlet.delegate = self;

方法实际上是这样的。注意参数

func textDidChange(_ notification: Notification) {

}