【发布时间】:2017-08-27 20:24:32
【问题描述】:
对于我使用 Xcode/Swift 构建的 MacOS 应用程序,我试图在 NSTextField 中的值发生更改时调用一个函数(当用户键入时)。所以我添加了一个通知中心观察者:
import Cocoa
class ViewController: NSViewController, NSTextDelegate {
@IBOutlet weak var textField: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(textFieldDidChange(_:)), name: Notification.Name.NSTextDidChange, object: nil)
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
func textFieldDidChange(_ notification: Notification) {
print(textField.stringValue)
}
}
这很好用。但是现在我想让它应用到特定的 NSTextField,所以我在观察者中设置了对象:
NotificationCenter.default.addObserver(self, selector: #selector(textFieldDidChange(_:)), name: Notification.Name.NSTextDidChange, object: textField)
现在它突然不再工作了,我似乎无法弄清楚为什么。刚开始使用 Xcode 和 Swift。我整个周末都在寻找解决方案,但我找到的大多数答案都适用于 iOS 应用、旧版本的 swift、Objective-C 等。
【问题讨论】: