     
     open func reset(items: [Model] = [], showEmptyView: Bool = false) {
         self.adapter.items = items
+        self.adjustEmptyView(hidden: !showEmptyView)
         self.reloadData()
-        _view.isScrollEnabled = !showEmptyView
-        if showEmptyView {
-            if let emptyView = configuration.emptyView {
+    }
+    
+    private func adjustEmptyView(hidden: Bool = false) {
+        if let emptyView = configuration.emptyView {
+            if self.isEmpty {
+                configuration.refreshControl?.isEnabled = !self.isEmpty
+                _view.set(contentOffset: .zero)
                 emptyView.frame = _view.bounds
                 emptyView.layoutIfNeeded()
-                emptyView.isHidden = !items.isEmpty
-            }
+                emptyView.isHidden = !self.isEmpty || hidden
+            } else {
+                let wasHidden = emptyView.isHidden
+                emptyView.isHidden = !self.isEmpty || hidden
+                if !wasHidden {
+                    configuration.refreshControl?.isEnabled = true
+                }
+            }
+            _view.isScrollEnabled = emptyView.isHidden
         }
     }
     

    }
    
    func handle(refresh models: [Model]) {
        _view.isScrollEnabled = false
        _view.isScrollEnabled = true
        configuration.refreshControl?.stopAnimating()
        self.adapter.removeAll()
        if self.configuration.animatedRefresh {

            self.adapter.append(contentsOf: models)
            self.reloadData()
        }
        self.adjustEmptyView()
        if let recognizers = recognizers {
            for recognizer in recognizers {
                _view.addGestureRecognizer(recognizer)
            }
        }
    }
    
