NSTextView textDidChange事件

时间:2015-02-03 08:35:59

标签: swift

我正在做类似的事情:

@IBOutlet var textView: NSTextView!

override func viewDidLoad() {
    super.viewDidLoad()

    textView.delegate = self
}

func textDidChange(notification: NSNotification) {

}

我添加了" NSTextViewDelegate"在一开始。

如果" textView"中的文本,我想设置标签的字符串值。改变了。

问题是我的程序会崩溃而没有任何错误消息(断点位于"有趣的textDidChange()......")。即使func textDidChange为空,它也会崩溃。

我做错了吗?

由于

2 个答案:

答案 0 :(得分:6)

使用这个,Swift 3

class ViewController: NSViewController, NSTextViewDelegate {

  @IBOutlet var textView: NSTextView!

  override func viewDidLoad() {
    super.viewDidLoad()

    textView.delegate = self

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

记住

  • _
  • 中有textDidChange(_ notification: Notification)
  • Swift 3更喜欢Notification而不是NSNotification
  • 设置代理textView.delegate = self

答案 1 :(得分:1)

请参阅此答案:textDidChange vs controlTextDidChange

简而言之,请改用controlTextDidChange: