我试图为这样的NSViewController注册一个委托:
class ViewController: NSViewController , NSTextFieldDelegate{
override func viewDidLoad() {
super.viewDidLoad()
textfield.delegate = self
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
@IBOutlet weak var textfield: NSTextField!
func textDidChange(_ notification: Notification)
{ print ("text did change ")
}
}
如果文本字段更改其内容,则不会调用func textDidChange。
在故事板中我做了以下连接:
答案 0 :(得分:2)
textDidChange
不是NSTextFieldDelegate
的一部分,它是NSTextDelegate
的一部分,而且它通常用于NSTextView
s,不是NSTextField
s。
NSTextFieldDelegate
采用NSControlTextEditingDelegate
,包括controlTextDidChange
,这是您正在寻找的内容。
override func controlTextDidChange(_ obj: Notification) {
print( "text did change" )
}
请注意,您可以通过故事板插座或代码设置代理,但您不需要同时执行这两项操作(我更喜欢前者,但它完全是主观的,这是优越的。)< / p>