                 observesInteractiveScrollView = false
             }
             if let scrollView = interactiveScrollView {
-                scrollView.addObserver(self, forKeyPath: "contentOffset", options: .new, context: nil)
+                scrollView.addObserver(self, forKeyPath: "contentOffset", options: [.old, .new], context: nil)
                 observesInteractiveScrollView = true
             }
         }

                observesSuperviewContentOffset = false
            }
            if let superview = self.superview as? UIScrollView, floating {
                superview.addObserver(self, forKeyPath: "contentOffset", options: .new, context: nil)
                observesSuperviewContentOffset = true
            }
        }

            
            updateButtonPosition()
            
            superview.addObserver(self, forKeyPath: "frame", options: [.old, .new], context: nil)
            observesSuperviewBounds = true
            if (floating && superview is UIScrollView) {
                superview.addObserver(self, forKeyPath: "contentOffset", options: [.old, .new], context: nil)
                observesSuperviewContentOffset = true
            }
        }
