Android 2.2以降、Blackberry 9以降、iOS4以降を対象としたモバイルアプリを作成しています。スタックでは、Phonegap、jQuery、iScroll(とりわけ)を使用しています。
私たちのアプリ画面の1つは次のようになります(匿名性のためにテキストが編集されています)-iOS5シミュレーターのSafariで実行されています。
ご覧のとおり、これは固定ヘッダーと、パディングの少ないデバイス画面全体に広がる複数のブロックレベルのフォーム要素を備えた典型的な入力画面です。
前述したように、私たちのアプリはiScrollを使用しています。このページでは、次のコード(iScrollの「フォーム」サンプルから取得)を使用して初期化しています。
// ...
window.scroller = new iScroll(id, {
useTransform: false,
onBeforeScrollStart: function(e) {
var target = e.target;
while (target.nodeType != 1) target = target.parentNode;
if(target.tagName != 'select'
&& target.tagName != 'input'
&& target.tagName != 'textarea') {
e.preventDefault();
}
}
});
// Disable touch scrolling (Req'd for iScroll)
window.document.addEventListener('touchmove', function(e) {
e.preventDefault();
}, false);
// ...
この画面では、ユーザーが背景のいずれかの部分に触れるとコンテンツが正常にスクロールしますが、入力要素の1つに触れてスクロールジェスチャ(上下にスワイプ)を開始するとコンテンツはスクロールしないことに気付きました。あなたが理解できるように、これは本質的にこの画面を使用することを不可能にするので、私は修正を探しています。
それ以来、iScrollで犯人の行を見つけました。
if (nodeName == "TEXTAREA" || nodeName == "INPUT" || nodeName == "SELECT" ) return;
(iscroll.jsの179)、このバグの未解決の問題であり、修正が要求され、1つのプルリクエストで修正が要求されますが、バグの作成者の行番号が正しくないため、修正を試みることができません。上記のプルリクエストは私には機能しません(iOS 5.1、Android 4.0.4でテスト済み)。
私の質問-ユーザーが入力要素に触れたときに(iScrollを使用して)スクロールできるようにする方法はありますか?そうでなければ、このような場合、iScrollは完全に役に立たない。現時点では、私はどちらかを見ています
- iScrollと同じ機能を備えていると主張するOverthrowシムを使用しますが、Androidのさまざまな 問題 があるため、これは優れたオプションではありません。これは、主要なプラットフォームの1つです。
- iScrollを廃止し、固定ヘッダーを失います。
2012年です-モバイルブラウザでこれを行う方法はまだありませんか?!?