2017-06-29 48 views
1

我有一個Ionic應用程序,頭部需要根據scrollTop調整大小。我使用的是離子的滾動事件上IonScroll:Ionic 2 - 當手指離開屏幕時不會觸發滾動事件

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

你可以試試'touchmove'' touchstart'' touchend'事件 – Duannx

+0

我想要的是當手指沒有觸摸屏幕時(即當內容由於iOS上的滾動動態而仍然滾動時)聽滾動,我相信'touchstart '','touchend'和'touchmove'僅在手指在屏幕上時被觸發... –

回答

3

幾個月前我也有類似的問題(在我的情況,我想顯示/隱藏「scrollToTop」按鈕當滾動到列表中時,它會在手指在屏幕上時正常工作,但如果你放開它,則不會起作用

底線是UIWebView在滾動和滾動檢測方面似乎有一些限制這些問題見:https://github.com/ionic-team/ionic/issues/10630

解決方案,Ionic-Team建議ests正在使用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); 
     }); 
    }); 
    } 
} 
+0

我從來沒有聽說過WKWebView解決方案,它只是解決了我的問題。謝謝! –

相關問題