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

我有一个带有标题的Ionic应用程序,我想根据scrollTopresize。 我在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-Team建议的解决方案是使用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); }); }); } }