 
     private func registerForNotifications() {
         notificationCenter.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
+        notificationCenter.addObserver(self, selector: #selector(keyboardDidShow), name: .UIKeyboardDidShow, object: nil)
+
         notificationCenter.addObserver(self, selector: #selector(keyboardWillChange), name: .UIKeyboardWillChangeFrame, object: nil)
+        notificationCenter.addObserver(self, selector: #selector(keyboardDidChange), name: .UIKeyboardDidChangeFrame, object: nil)
+
         notificationCenter.addObserver(self, selector: #selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil)
     }
 


    private var handlingKeyboardChange = false
    private var keyboardIsShown = false
    private var initialContentInset: UIEdgeInsets? = nil

    //In some cases KbEndFrame is the same as KBbeginFrame despite beign different (for example user taps on search bar and bar with predictions disappears)

    //iOS 10: This method is called every time user taps input field and if keyboard changes
    //iOS 9 & 8: This method is called every time keyboard changes
    @objc func keyboardWillShow(notification: Notification) {
        if shouldProcess(givenKeyboardEvent: .WillShow, andNotification: notification) {
            handleKeyboardEvent(ofType: .WillShow, notification: notification)
        }
    }

    @objc func keyboardDidShow(notification: Notification) {
        if shouldProcess(givenKeyboardEvent: .DidShow, andNotification: notification) {
            handleKeyboardEvent(ofType: .DidShow, notification: notification)
        }
    }

    @objc func keyboardWillChange(notification: Notification) {
        if shouldProcess(givenKeyboardEvent: .WillChange, andNotification: notification) {
            handleKeyboardEvent(ofType: .WillChange, notification: notification)
        }
    }

    @objc func keyboardDidChange(notification: Notification) {
        if shouldProcess(givenKeyboardEvent: .DidChange, andNotification: notification) {
            handleKeyboardEvent(ofType: .DidChange, notification: notification)
        }
    }

    @objc func keyboardWillHide(notification: Notification) {
