1

40% のスクロールに達したときに、スクロール ビューにビューを追加しようとしています。これは私がやっている方法です:

scrollView.add(//add first 10 initial containerView's);
var triggerScroll = true; 
var scrollPercentage = 0; 
scrollView.addEventListener('scroll', function(e) { 
var devHeight = Ti.Platform.displayCaps.platformHeight; 
    var currPos = scrollView.contentOffset.y;
    if(currPos > devHeight){
        currPos = currPos - devHeight;
    }

    scrollPercentage = (currPos)/devHeight * 100;

    if(scrollPercentage > 40 && triggerScroll){
        triggerScroll = false;
        var containerView = myapp.createMyView();
        scrollView.add(containerView);
    }

    //reset scroll to true after the offset reaches end of the screen, so that the 
    //'scroll' event listener only gets called ONCE every time it crosses 40%
    if(scrollPercentage > 101){
        triggerScroll = true;
    }

});

しかし、それは機能していません。垂直スクロール ビューで無限スクロールをサポートしようとしています。何がうまくいかないのですか?

4

2 に答える 2

1

スクロールビュー内に無限スクロールを統合する場合、考慮しなければならない重要な点がいくつかあります。

1. スクロール イベントが頻繁にトリガーされる: underscoreJS を使用して、スクロール イベントのコールバックを抑制してみてください。

Throttle は、渡された関数のスロットルされた新しいバージョンを作成して返します。これは、繰り返し呼び出された場合、実際には待機ミリ秒ごとに最大 1 回だけ元の関数を呼び出します。追いつくことができないほど速く発生するレート制限イベントに役立ちます。詳細については、underscorejs のドキュメントを参照してください。

2. Android と iOS のデフォルトおよびシステム単位: Androidのビューのサイズは、ビューの座標とは異なる表示単位を使用します。この単位の不一致により、無限スクロールのトリガーが正しく計算されなくなります。これを解決するには、デフォルトの単位を自分で取得して設定する必要があります。解決策は、このウィジェットで見つけることができます (getDefaultUnit() を参照): https://github.com/FokkeZB/nl.fokkezb.color/blob/master/controllers/widget.js

3. ti-infini-scroll がこれに役立ちます。このライブラリは、デフォルトの Titanium ScrollView のラッパーを作成します。このラッパーには、スクロールの終了 (新しいデータの更新/取得のトリガー) の計算が含まれています。このライブラリを使用する場合は、箇条書き 2 を実装することを忘れないでください。 https://github.com/goodybag/ti-infini-scroll

于 2016-02-18T08:35:54.923 に答える