我有一个带有标题的 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);
});
});
}
}