2

document touch move と prevent.default(); を適用して webview のスクロールを無効にした phonegap アプリがあります。

問題は、テキストがオーバーフローした場合にスクロールしたい 2 つのテキスト領域があることです。防止のデフォルトはこれを妨げます。

私はさまざまな結果でいくつかの回避策を試しましたが、これまでのところ、タッチ移動イベントの x と y を検出し、テキスト領域の外側にある場合にのみデフォルトの防止を適用する次の関数が最善でした。

function preventBehavior(e) 
{ 
    console.log("event.targetTouches[0].pageX = " + event.targetTouches[0].pageX + " event.targetTouches[0].pageY = " + event.targetTouches[0].pageY);

    var x = event.targetTouches[0].pageX;
    var y = event.targetTouches[0].pageY;

    //fix the scroll of textareas for iOS by avoiding prevent default in them 
    if (x > 20 && x < 300 && y > 80 && y < 230){
        //touch falls within first text area
    }else if (x > 20 && x < 300 && y > 245 && y < 400){
        //touch falls within second text area
    }else{
        e.preventDefault(); 
    }
};
document.addEventListener("touchmove", preventBehavior, false);

問題は、テキスト領域がスクロールを必要としない場合、Web アプリ全体をスクロールすることです。

誰かがこの問題の決定的な修正を持っていますか?

前もって感謝します。

4

1 に答える 1

1

テキストフィールドのスクロールのみが必要な場合は、 iscroll.jsを使用できます。また、デスクトップ Web ブラウザでも検索できます。

于 2012-04-29T05:48:29.967 に答える