0
に親の変更を確認するのに苦労していますNSWindow
。私は以上のテストプロジェクトでこれを試しました。サブクラスNSView
が含まれています。NSViewがNSWindowの変更を監視できない - KVOとSwift
class MyView: NSView {
//add observer on awake from nib
//works fine
override func awakeFromNib() {
if let win = self.window {
win.addObserver(self, forKeyPath: Notification.Name.NSWindowDidBecomeKey.rawValue, options: .new, context: nil)
}
}
//remove observer on dealloc
//allso works fine
deinit {
if let win = self.window {
win.removeObserver(self, forKeyPath: Notification.Name.NSWindowDidBecomeKey.rawValue)
}
}
//never gets called
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
Swift.print(keyPath ?? "")
Swift.print("worked!")
}
override func draw(_ dirtyRect: NSRect) {
NSColor.blue.set()
NSBezierPath.fill(dirtyRect)
}
}
私はまた、hereを試しましたが、運はありません。私はまた、他の答えをチェックして答えを見つけることができませんでした。ほとんどのカバーはKVOに準拠した独自のクラスです。私はNSWindowオブジェクトを観察したい。私は何が欠けていますか?