 private extension SpringIndicator.Refresher {
     private func addObserver(scrollView: UIScrollView) {
         if targetView == nil {
+            scrollView.addObserver(self, forKeyPath: ObserverOffsetKeyPath, options: .New, context: &RefresherContext)
             targetView = scrollView
-            scrollView.addObserver(self, forKeyPath: ObserverOffsetKeyPath, options: .New, context: nil)
         }
     }
     


public extension SpringIndicator.Refresher {
    public func startRefreshing(sendActions: Bool = false) {
        refreshing = true
        
        if let superview = superview as? UIScrollView {
            addObserver(superview)
        }
        
        if sendActions {

@IBDesignable
public class SpringIndicator: UIView {
    public class Refresher: UIControl {
        private var RefresherContext = ""
        private let ObserverOffsetKeyPath = "contentOffset"
        private let ScaleAnimationKey = "scaleAnimation"
        private let DefaultContentHeight: CGFloat = 60
