swift - NSViewController 委托(delegate)

标签 swift cocoa nstextfield

我试着像这样为 NSViewController 注册一个委托(delegate):

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。

在 Storyboard 中,我建立了以下联系:

enter image description here

最佳答案

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

NSTextFieldDelegate采用NSControlTextEditingDelegate , 包括 controlTextDidChange ,这就是您要查找的内容。

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

请注意,您可以通过 Storyboard outlet 或代码设置代理,但您不需要同时执行这两种操作(我更喜欢前者,但它完全是主观的,后者更好)。

关于swift - NSViewController 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41623291/

相关文章:

ios - 核心蓝牙的两个实例

ios - 即使手机重新启动后,如何在后台快速获取位置?

ios - Swift:无法将表达式的类型 '$T3' 转换为类型 '$T4'

objective-c - cocoa : How to make multiline NSTextField?

macos - 从 NSTextField 获取值

swift - 停止 NSTokenField 修剪空格

ios - 类型字符串没有成员 swift

cocoa - 过滤/清理用户输入。最佳方法

cocoa - 基于 NSDate 类型的属性对自定义对象的 NSArray 进行排序

objective-c - 单击并编辑标签中句子的单词