4

Cordova CLI v3.4 で ionicframework を使用する

config.xml ファイルで次の設定を使用しています。

<preference name="webviewbounce" value="false" />
<preference name="UIWebViewBounce" value="false" />
<preference name="DisallowOverscroll" value="true" />

CLI と XCode を使用してコンパイルしても、何も修正されないようです。

次に、プロジェクト全体を検索し、DisallowOverscrollすべての値がに設定されていることを確認しましたtrue

私の見解では、まだラバーバンディングが発生しています。何が問題なのか誰にも分かりますか?

ありがとう!

4

2 に答える 2

12

ionics forums のこの投稿によると:

「それはコードバの問題ではなく、イオンの問題です。

 <ion-content
         has-bouncing="false"
         start-y="55"
         padding="true"
         has-tabs="true"
         has-header="true"
         >

属性を使用してディレクティブhas-bouncingのバウンス効果を無効にします"ion-content

attr を設定するhas-bouncing="false"必要がありましたが、Cordova の構成設定を上書きできる理由がわかりません。

于 2014-04-29T21:23:33.183 に答える
0

HTML ドキュメントがWebView ビューポート (別名、JS の window.height) よりも背が高くなければ、HTML+JS 側でもこれを行うことができます。これを行うには、適切な時点で「touchmove」イベントで preventDefault を呼び出します (つまり、要素とそのすべての親に、ユーザーが指を動かし始めた方向にスクロールするものが何もない場合)。

jQuery を使用せずに実際のコードを示しますが、Q.addEventListener と Q.removeEventListener を自分で実装する (または jQuery を使用する) 必要があります。

function _touchScrollingHandler(event) {
    var p = event.target;
    var pos;
    var scrollable = null;
    do {
        if (!p.computedStyle) {
            continue;
        }
        var overflow = p.computedStyle().overflow;
        var hiddenHeight = p.scrollHeight - p.offsetHeight;
        var s = (['hidden', 'visible'].indexOf(overflow) < 0);
        if ((s || p.tagName === 'HTML') && hiddenHeight > 0) {
            if ((Q.Pointer.movement.positions.length == 1)
            && (pos = Q.Pointer.movement.positions[0])) {
                var sy = Q.Pointer.getY(event)
                    + Q.Pointer.scrollTop();
                if ((sy > pos.y && p.scrollTop == 0)
                || (sy < pos.y && p.scrollTop >= hiddenHeight)) {
                    continue;
                }
            }
            scrollable = p;
            break;
        }
    } while (p = p.parentNode);
    if (!scrollable) {
        Q.Pointer.preventDefault(event);
    }
}

var Q = {
    preventTouchScrolling: function () {
        Q.addEventListener(window, 'touchmove', _touchScrollingHandler);
    },
    restoreTouchScrolling: function () {
        Q.removeEventListener(window, 'touchmove', _touchScrollingHandler);
    }
};
于 2014-10-23T03:39:29.840 に答える