离子 2 - 当手指离开屏幕时不触发滚动事件



我有一个带有标题的 Ionic 应用程序,我想根据 scrollTop 调整大小。我在 IonScroll 上使用 Ionic 的滚动事件:

import { Scroll } from 'ionic-angular';  
@ViewChild(Scroll) scroll: Scroll;
...
ionViewDidLoad() {
    this.scroll.addScrollEventListener((ev) => {
        console.log('scroll');
    });
}

在 iOS 上,当我将手指放在屏幕上时,滚动事件会完美触发,但是当手指离开屏幕时(但由于惯性,滚动继续(,该事件仅在滚动停止时触发。

有没有办法在手指离开屏幕时收听滚动事件(或任何其他类似事件(?

我发现了这个问题,它看起来很相似,但没有任何答案:当手指离开屏幕时,iOS滚动事件不经常触发

几个月前,我遇到了类似的问题(就我而言,我想在向下滚动列表时显示/隐藏"scrollToTop"按钮。当手指在屏幕上时,它会正常工作,但如果你放开它就不行了。

最重要的是,UIWebView在滚动方面有一些限制,滚动检测似乎是这些问题之一。请参阅:https://github.com/ionic-team/ionic/issues/10630

Ionic团队建议的解决方案是使用WKWebView,因为那里不存在这些问题。

https://github.com/ionic-team/cordova-plugin-wkwebview-engine

您可以尝试的最后一件事,尽管我很确定它不会对您的情况产生影响,而是在 NgZone 中运行您的代码:

import { NgZone } from '@angular/core';
export class myPage {
  zone: NgZone;
  constructor() {
    this.zone = new NgZone({enableLongStackTrace: false});
    this.content.ionScroll.subscribe(($event) => {
       this.zone.run(() => {
           // console.log($event);
       });
    });
  }
}

最新更新