         }
     }
 
+    //MARK: - Keyboard Notifications
+    @objc private func keyboardWillShow(notification: Notification) {
+        respondToKeyboardAnimation(notification: notification)
+    }
+
+    @objc private func keyboardWillHide(notification: Notification) {
+        respondToKeyboardAnimation(notification: notification)
+    }
+
+    private func respondToKeyboardAnimation(notification: Notification) {
+        guard let info = KeyboardNotificationInfo(notification.userInfo) else { return }
+        guard let height = scrollViewHeight else { return }
+        height.constant = height.constant + info.deltaY
+    }
+
     required init?(coder aDecoder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }


    private func addConstraints() {
        header.constrainTopCorners(height: headerHeight)
        scrollView.constrain(toSuperviewEdges: UIEdgeInsets(top: headerHeight, left: 0, bottom: 0, right: 0))
        scrollViewContent.constrain([
            scrollViewContent.topAnchor.constraint(equalTo: scrollView.topAnchor),
            scrollViewContent.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: .UIKeyboardWillShow, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: .UIKeyboardWillHide, object: nil)
    }

    deinit {
        NotificationCenter.default.removeObserver(self)
    }

    func set(transaction: Transaction, isBtcSwapped: Bool, rate: Rate, rates: [Rate], maxDigits: Int) {
