1

div でiOS ネイティブ スクロールを使用する phonegap アプリケーションがあります-webkit-overflow-scrolling。ユーザーがボタンをクリックしたときに進行中のスクロールを手動で停止できるようにしたい (ページの上部にスクロールして戻る)。これは実行可能ですか?

4

3 に答える 3

2

残念ながら、現時点ではこれは不可能です。scrollイベントは、スクロールが終了したときにのみトリガーされます。勢いがコンテンツを動かし続ける限り、イベントはまったく発生しません。これは、図6-1Appleの「SafariWebコンテンツガイド」のパンジェスチャで確認できます。

また、この動作を示すためにフィドルを作成しました。scrollTop値は、 iOSのアニメーション化が完了した後に設定されます。

于 2013-02-08T11:54:11.777 に答える
0

「クリック」の代わりに「タッチスタート」を使用してタッチ イベントをキャプチャできます。これは、クリック イベントがモーメンタム スクロールが完了するまで発生しないように見える場合があるためです。このjQueryソリューションを試してください:

$('#yourTrigger').on('touchstart', function () {
    var $div = $('.yourScrollableDiv');
    if ($div.scrollTop() === 0) {
        return false; //if no scroll needed, do nothing.
    }
    $div.addClass('scrolling'); //apply the overflow:hidden style with a class
    $div.animate({
        scrollTop: 0
    }, 600, function () {
        $div.removeClass('scrolling'); //scrolling has finished, remove overflow:hidden
    });
}

@Patrick-Rudolphが言ったように、「スクロール」クラスには単にCSSプロパティoverflow:hiddenがあり、進行中の勢いのあるスクロールを停止します。

.scrolling {
    overflow: hidden;
}

注: タイマー関数を設定するよりも、コールバック関数を使用してスクロール アニメーションの終了を通知することをお勧めします。

于 2015-09-24T20:54:39.550 に答える