0

UIWebview が UIScrollview 内に埋め込まれている場合、UIWebview の JavaScript およびタッチ イベントに関して質問があります。

UIScrollview には、多数のビュー (簡単にするために「サブビュー」と呼びます) が並んでいます。各サブビューは iPad 画面のサイズであり、左/右にスワイプすると、次/前のサブビューに移動する必要があります。これらのサブビューの 1 つは UIWebview で、タッチ イベントと場合によっては iScroll コンポーネントを使用する小さな JavaScript アプリを実行しています。

残念ながら、UIWebview が UIScrollview 内に埋め込まれているという事実 (Apple が推奨しない方法: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.htmlを参照) 「重要」というラベルの付いたボックス) は私の手に負えません。

私が抱えている問題は、UIWebview サブビューをスワイプするときのタッチ イベントに関するものです。たとえば、Google ホームページを読み込むと、スワイプは正常に機能し、次のサブビューが表示されます。ただし、JS アプリの 1 つをロードすると、スワイプが機能しません。

UIWebview コンポーネントがタッチ イベントを取得し、それに応じて応答できるように、それらを内部の Javascript に渡すと想定しています。また、それらを UIScrollview に反映しますか? それとも、イベントで「伝播を停止」しないようにするのはJavascriptコード次第ですか? これらのイベントがどのように調整されているかについての情報をいただければ幸いです。

最後に、私は JavaScript プログラマーではなく、Objective-C プログラマーですが、その基本は理解しています。つまり、かなりの数の Stanford iTunes iOS シリーズの Objective-C ビデオを見て、いくつかのデモをコーディングしましたが、それだけです。 .

ありがとうございました。

4

1 に答える 1

0

失敗したページは よりも幅が広いUIWebViewですか? scalesPageToFitプロパティを に設定し、 が使用YESする内部のバウンスを無効にすると、問題が解決するはずです。UIScrollViewUIWebView

以下を使用して、バウンスを無効にすることができます。

for (UIView *view in webView.subviews) {
    if (![[view class] isSubclassOfClass:[UIScrollView class]]) continue;
    ((UIScrollView *)view).bounces = NO;
    break;
}

ただし、App Store 経由で配布されていないアプリにのみこれを使用したため、App Store の承認については保証しません。

于 2011-02-18T14:35:13.490 に答える