         tableView.keyboardDismissMode = .interactive
         if let insets = tableViewDelegate?.crudViewControllerTableViewContentInsets(crudViewController: self) {
             tableView.contentInset = insets
+            tableView.contentOffset = CGPoint.zero.offset(yDelta: -insets.top)
         }
         if let (reuseIdentifier, klass) = tableViewDelegate?.crudViewControllerCellClassToRegisterForReuseIdentifiers(crudViewController: self) {
             tableView.register(klass, forCellReuseIdentifier: reuseIdentifier)

private extension CrudViewController {

    func setLookAndFeel() {
        let fieldBlurView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.dark))
        cancelButtonBlurView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.dark))
        cancelButtonBlurView.alpha = 0
        let blurs: [UIView] = [ fieldBlurView, cancelButtonBlurView ]
        blurs.forEach {
            self.view.insertSubview($0, belowSubview: searchContainer)
        }
        fieldBlurView.edgeAnchors == searchField.edgeAnchors
        cancelButtonBlurView.edgeAnchors == searchCancelButton.edgeAnchors

        let searchViews: [UIView] = [ searchField, searchCancelButton ]
        searchViews.forEach { $0.layer.borderWidth = 2 * UIScreen.main.hairlineWidth }

        (blurs + searchViews).forEach {
            $0.clipsToBounds = true
            $0.layer.cornerRadius = 10
        }

        searchField.layer.borderColor = searchField.tintColor.cgColor
        searchCancelButton.layer.borderColor = searchCancelButton.tintColor.cgColor

        searchCancelButton.setTitleColor(searchCancelButton.tintColor, for: .normal)
    }

    func resetSearch() {

    }

    func setTableView(toHideAddItemRow hideAddItemRow: Bool) {
        guard
            let searchCancelButton = searchCancelButton,
            let cancelButtonBlurView = cancelButtonBlurView,
            let searchCancelButtonWidthConstraint = searchCancelButtonWidthConstraint,
            let searchCancelButtonLeadingConstraint = searchCancelButtonLeadingConstraint
        else { return }

        DispatchQueue.main.async {
            let constraintAnimations = {
                searchCancelButtonWidthConstraint.constant = hideAddItemRow ? 60 : 0
                searchCancelButtonLeadingConstraint.constant = hideAddItemRow ? 20 : 0
                self.view.layoutIfNeeded()
            }

            let alphaAnimations = {
                searchCancelButton.alpha = hideAddItemRow ? 1 : 0
                cancelButtonBlurView.alpha = hideAddItemRow ? 1 : 0
            }

            if hideAddItemRow {
