       }
 
     // pan gesture
-    let didPan = self.panRecognizer.rx.event
+    let didPan = self.panRecognizer.rx.event.debug("pan")
       .withLatestFrom(frameVariable.asObservable()) { ($0, $1) }
       .flatMap { (gestureRecognizer, frame) -> Observable<CGRect> in
         guard let window = UIApplication.shared.windows.first,

    let frameVariable = Variable<CGRect>(defaultFrame)
    self.frame = frameVariable.asDriver()
    self.visibleHeight = self.frame.map { UIScreen.main.bounds.height - $0.origin.y }

    super.init()


  /// or `0` if the keyboard is not visible.
  public let visibleHeight: Driver<CGFloat>

  /// Same with `visibleHeight` but only emits values when keyboard is about to show. This is
  /// useful when adjusting scroll view content offset.
  public let willShowVisibleHeight: Driver<CGFloat>


  // MARK: Private

