UIResponder.keyboardWillHideNotification is not working in Xib's NSObject

I've been building UIs with Storyboards. Added an NSObject file to the Storyboard to handle keyboard open/close detection within the NSObject file.

This is NSObject file code.

import UIKit

final class KeyboardEvader: NSObject {
  @IBOutlet private weak var scrollView: UIScrollView?

  override func awakeFromNib() {
    super.awakeFromNib()
    registerForKeyboardNotifications()
  }

  private func registerForKeyboardNotifications() {
    NotificationCenter.default.addObserver(
      self,
      selector: #selector(onShowKeyboard(_:)),
      name: UIResponder.keyboardWillShowNotification,
      object: nil
    )

    NotificationCenter.default.addObserver(
      self,
      selector: #selector(onHideKeyboard(_:)),
      name: UIResponder.keyboardWillHideNotification,
      object: nil
    )
  }

  @objc private func onShowKeyboard(_ notification: Notification) {
    print("scrollView", scrollView)
    print("onShowKeyboard")
    guard let scrollView = scrollView else { return }
    guard let keyboardFrame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect else { return }

    let insets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardFrame.height, right: 0)
    print(insets)
    scrollView.contentInset = insets
    scrollView.scrollIndicatorInsets = insets
  }

  @objc private func onHideKeyboard(_ notification: Notification) {
    print("zero")
    guard let scrollView = scrollView else { return }

    scrollView.contentInset = .zero
    scrollView.scrollIndicatorInsets = .zero
  }
}

onShowKeyboard is called from within the ViewController created as a Storyboard, but does not work when created with a Xib.

Maybe it has something to do with UIResponder Chain? How do I solve it?

UIResponder.keyboardWillHideNotification is not working in Xib's NSObject
 
 
Q