代码之家  ›  专栏  ›  技术社区  ›  user1822824

侦听NSTextViewDelegate&textViewDidChange不工作时对NSTextView的更改

  •  5
  • user1822824  · 技术社区  · 8 年前

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

    import Cocoa
    
    class ViewController: NSViewController, NSTextViewDelegate {
    
        @IBOutlet var textViewOutlet: NSTextView!
    
        func textViewDidChange(textView: NSTextView) {
            print("Text view changed!")
        }
    }
    

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

    2 回复  |  直到 8 年前
        1
  •  15
  •   Leo Dabus    5 年前

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

    func textDidChange(_ notification: Notification) {
        guard let textView = notification.object as? NSTextView else { return }
        print(textView.string)
    }
    
        2
  •  3
  •   Simon    7 年前

    这就是为什么没有委派。

    TextViewOutlet.delegate = self;
    

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

    func textDidChange(_ notification: Notification) {
    
    }