     }
     
     private func refreshStart(scrollView: UIScrollView) {
-        scrollView.contentInset.top = refreshingInsetTop
+        let insetTop = refreshingInsetTop
+        
+        refreshing = false
+        scrollView.contentInset.top = insetTop
+        refreshing = true
         
         sendActionsForControlEvents(.ValueChanged)
         indicator.layer.addAnimation(refreshAnimation(), forKey: ScaleAnimationKey)

                
                if refreshing && scrollView.dragging == false {
                    refreshStart(scrollView)
                    
                    return
                }
                

    }
    
    public func endRefreshing() {
        if let scrollView = superview as? UIScrollView {
            var insetTop = refreshingInsetTop
            refreshing = false
            
            if scrollView.contentInset.top != insetTop {
                insetTop = refreshingInsetTop - initialInsetTop
            } else {
                insetTop = refreshingInsetTop
            }
            
            UIView.performSystemAnimation(.Delete, onViews: [], options: nil, animations: {
                scrollView.contentInset.top = insetTop
                }, completion: nil)
        }
        
        indicator.stopAnimation(true)
