 
     var preferredInputViewType: TextFormattingInputViewController.InputViewType?
 
+    private var previousPreferredAccessoryView: (UIView & Themeable)?
     private var preferredAccessoryView: (UIView & Themeable)? {
         didSet {
-            reloadInputViews()
-            textView.reloadInputViews()
+            previousPreferredAccessoryView = oldValue
+
+            preferredAccessoryView?.apply(theme: theme)
+            textView.inputAccessoryView = preferredAccessoryView
+
+            if preferredAccessoryView != nil && oldValue != nil {
+                textView.reloadInputViews()
+            }
         }
     }
 

        return !(unmodifiedWikiText == textView.text)
    }

    override var canBecomeFirstResponder: Bool {
        return true
    }

    private var isCustomInputViewHidden: Bool = true

    func setCustomInputViewHidden(type: TextFormattingInputViewController.InputViewType? = nil, hidden: Bool) {
        let responder = isFirstResponder ? self : textView

        setCursorPositionIfNeeded()

        let animator = UIViewPropertyAnimator.init(duration: 0.3, curve: .easeInOut) {
            responder?.resignFirstResponder()
        }

        animator.addCompletion { (_) in

        registerForKeyboardNotifications()
        enableProgressButton(changesMade)

        textView.becomeFirstResponder()
        preferredAccessoryView = defaultEditToolbar
    }

    override func viewWillDisappear(_ animated: Bool) {
