我有一个带有标题的Ionic应用程序,我希望根据scrollTop调整大小。我在IonScroll上使用Ionic的滚动事件:
import { Scroll } from 'ionic-angular';
@ViewChild(Scroll) scroll: Scroll;
...
ionViewDidLoad() {
this.scroll.addScrollEventListener((ev) => {
console.log('scroll');
});
}
在iOS上,当我将手指放在屏幕上时,滚动事件会被完全触发,但当手指离开屏幕时(但由于惯性而滚动仍在继续),只有在滚动停止时才会触发事件。
当手指离开屏幕时,有没有办法收听滚动事件(或任何其他类似事件)?
我发现了这个问题,看似相似但没有任何答案:iOS scroll event not firing as often when finger is off of the screen
答案 0 :(得分:4)
几个月前我遇到了类似的问题(在我的情况下,我想在向下滚动列表时显示/隐藏“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);
});
});
}
}