使用NSTextViewDelegate&amp ;;监听对NSTextView的更改textViewDidChange不起作用

时间:2016-03-31 20:01:53

标签: swift cocoa nstextview

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

import Cocoa

class ViewController: NSViewController, NSTextViewDelegate {

    @IBOutlet var textViewOutlet: NSTextView!

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

我没有收到任何错误,但我的陈述没有打印。

2 个答案:

答案 0 :(得分:4)

应该是textDidChange(通知:)。试试这样:

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

答案 1 :(得分:2)

这应该是没有委托任务的原因。

TextViewOutlet.delegate = self;

这个方法实际上就像这样。注意参数

func textDidChange(_ notification: Notification) {

}