2017-06-12 3 views
2

スクロール中にいくつかの関数を実行しようとしています。基本的には、特定のスクロール位置が満たされている場合、私はアプリが何かをしたい。コードのここイオン2:iOSでスクロールするときに関数を実行する

一部:

ionViewDidLoad() { 
    this.content.ionScroll.subscribe((event) => { 
     this.scrollPosition = event.scrollTop; 
     if(this.scrollPosition >= 100){ 
     console.log("more than 100"); 
     } 
     else { 
     console.log("less than 100"); 
     } 
    }); 
    } 

WebブラウザやAndroidデバイス上で期待どおりに動作しますスクロールしながら、それは繰り返し条件内「はconsole.log()」のを実行します。 iOSでは、スクロールが停止するのを待ってからconsole.log()を実行します。 パフォーマンス上の理由から、iOSでスクロール中にjavascriptが停止してしまったと読んでいました。このための回避策はありますか?

+0

約1年前に、私は[jquery-do-scroll](https://github.com/WashingtonGuedes/jquery-do-scroll)をiPadのこのケースの回避策として作成しましたが、自然な形でイオンフレームワークで動作します。基本的に、このプラグインはタッチイベントを使用して、使いやすい機能をスクロールします。 –

+0

https://github.com/ionic-team/cordova-plugin-wkwebview-engineプラグインを使用してみましたか?スクロールイベントは、使用時に期待どおりに動作するはずです。 – z00bs

+1

実際に私はしなかった、私はそれを試してみる – leota

答えて

0

Safariはスクロールが完了するまでスクロールイベントを発生させないため、この場合はカスタムイベントリッスンを行う必要があります。

は、この記事をチェックアウト:javascript scroll event for iPhone/iPad?

をとてもように達成することができ:

document.addEventListener("touchmove", ScrollStart, false); 
document.addEventListener("scroll", Scroll, false); 

function ScrollStart() { 
    //start of scroll event for iOS 
} 

function Scroll() { 
    //end of scroll event for iOS 
    //and 
    //start/end of scroll event for other browsers 
} 

私はこれら二つのイベントをリッスンするHostListenerを使用して、ディレクティブを作成することをお勧めします。

+0

ありがとう、それは有用だったが、機能 "ScrollStart()"が画面上に私の指を保持する場合にのみ実行されます。私が下にスワイプして画面から指を離すと、ビューはまだスクロールしている間に実行を停止します。私はいつもスクロール位置を知る必要があります。何かアドバイス? – leota

+0

それからtouchStartも聞く必要があります。 https://developer.apple.com/documentation/webkitjs/touchevent – Everett

+0

私はドキュメントを読んでいますが、これらのすべてのイベントは指が表面に触れたときにのみ発生します。ビューがまだスクロールしていても、指を離すとすぐに発砲は止まります。とにかくありがとう – leota

関連する問題