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

时间:2017-06-29 08:35:36

标签: ios angular ionic2

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

1 个答案:

答案 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);
       });
    });
  }
}