我正在做类似的事情:
@IBOutlet var textView: NSTextView!
override func viewDidLoad() {
super.viewDidLoad()
textView.delegate = self
}
func textDidChange(notification: NSNotification) {
}
我添加了" NSTextViewDelegate"在一开始。
如果" textView"中的文本,我想设置标签的字符串值。改变了。
问题是我的程序会崩溃而没有任何错误消息(断点位于"有趣的textDidChange()......")。即使func textDidChange为空,它也会崩溃。
我做错了吗?
由于
答案 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)
Notification
而不是NSNotification
textView.delegate = self
答案 1 :(得分:1)
请参阅此答案:textDidChange vs controlTextDidChange
简而言之,请改用controlTextDidChange:
。