Swift - controlTextDidChange 是否适用于 NSTextView?

Swift - Does controlTextDidChange Work With NSTextView?

我有一个文本字段和一个文本视图。 controlTextDidChange 方法响应文本字段更改。但它不响应文本视图的更改。

class AppDelegate: NSObject,NSApplicationDelegate,NSTextFieldDelegate,NSTextViewDelegate {
    func applicationWillFinishLaunching(notification:NSNotification) {
        /* delegates */
        textField.delegate = self
        textView.delegate = self    
    }

    override func controlTextDidChange(notification:NSNotification?) {
        if notification?.object as? NSTextField == textField {
            print("good")
        }
        else if notification?.object as? NSTextView == textView {
            print("nope")
        }
    }
}

我 运行 Xcode 7.2.1 Yosemite。我做错了什么吗?

controlTextDidChange:NSControl class 的一个方法,被 NSTextField 继承,但不被 NSTextView:

继承

因此,NSTextView 的实例无法接收上述回调。

我认为您应该从 NSTextViewDelegate 协议实施 textDidChange:

func textDidChange(notification: NSNotification) {
  if notification.object == textView {
    print("good")
  }
}