NSViewController委托

时间:2017-01-12 21:26:18

标签: swift cocoa nstextfield

我试图为这样的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。

在故事板中我做了以下连接:

enter image description here

1 个答案:

答案 0 :(得分:2)

textDidChange不是NSTextFieldDelegate的一部分,它是NSTextDelegate的一部分,而且它通常用于NSTextView s,不是NSTextField s。

NSTextFieldDelegate采用NSControlTextEditingDelegate,包括controlTextDidChange,这是您正在寻找的内容。

override func controlTextDidChange(_ obj: Notification) {
    print( "text did change" )
}

请注意,您可以通过故事板插座或代码设置代理,但您不需要同时执行这两项操作(我更喜欢前者,但它完全是主观的,这是优越的。)< / p>