Swift - controlTextDidChange是否可以与NSTextView一起使用?

时间:2016-05-14 06:35:35

标签: swift cocoa nstextview

我有一个文本字段和一个textView。 controlTextDidChange方法响应文本字段更改。但它没有回应textview的变化。

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")
        }
    }
}

我在Yosemite下运行Xcode 7.2.1。我做错了吗?

1 个答案:

答案 0 :(得分:7)

controlTextDidChange:NSControl类的一种方法,由NSTextField继承,但不由NSTextView继承:

enter image description here

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

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

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