Если makeFirstResponder
возвращает true
, то, скорее всего, это был первый ответчик, по крайней мере, в течение короткого промежутка времени.
Вы можете использовать тот факт, что NSWindow.firstResponder
является KVO-совместимым для обнаружения любых изменений в нем с помощью чего-то вроде следующего кода в вашем ViewController
классе:
override func viewDidAppear() {
super.viewDidAppear()
self.view.window?.addObserver(self, forKeyPath: "firstResponder", options: [.initial, .new], context: nil)
self.view.window?.makeFirstResponder(self.windowController?.searchField)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "firstResponder" {
print("First responder of window: \(object) is \(change?[NSKeyValueChangeKey.newKey])")
}
}