jQuery Mobile
内で実行されるアプリケーションで使用していますUIWebView
。アプリケーションはで書かれMonotouch
ており、複数のタブがあり、タブの1つはhtml5
Webビュー内のコンテンツを表示します。コンテンツがアプリケーションのネイティブセクションに対して一貫したルックアンドフィールを持つことがjQuery Mobile
できます。カスタム選択メニュー、つまり属性がに設定されている選択を使用html5
する機能を構築しようとしていますが、ここで奇妙な問題が発生しました。私は問題を簡単な例に絞り込みました。コードは次のとおりです。html5
jQuery Mobile
data-native-menu
false
<body>
<div data-role="page" data-theme="b" id="forms">
<div data-role="content">
<select id="test" data-native-menu="false">
<option value="abc">ABC</option>
<option value="def">DEF</option>
<option value="ghi">GHI</option>
<option value="jkl">JKL</option>
<option value="mno">MNO</option>
<option value="pqr">PQR</option>
<option value="abc1">ABC</option>
<option value="def1">DEF</option>
<option value="ghi1">GHI</option>
<option value="jkl1">JKL</option>
<option value="mno1">MNO</option>
<option value="pqr1">PQR</option>
<option value="abc2">ABC</option>
<option value="def2">DEF</option>
<option value="ghi2">GHI</option>
<option value="jkl2">JKL</option>
<option value="mno2">MNO</option>
<option value="pqr2">PQR</option>
</select>
</div> <!--content-->
</div> <!-- page-->
</body>
このコードを実行するFirefox
かSafari
、正常に動作します。また、私がそれを実行するとMobile Safari
、iPad
それもうまくいきます。しかしUIWebView
、アプリケーション内でこれを実行すると、選択に少数のアイテムがあり、オーバーレイが表示されている場合にのみ、ポップアップが正しく表示されて閉じます。代わりに、全画面ポップアップが表示されている場合、ポップアップを閉じると問題が発生します。したがって、たとえば、上記で貼り付けたコードでは、が中にあるときに選択がクリックされると、オーバーレイが表示されiPad
ますportrait mode
。しかしiPad
、アプリケーションが表示されるように回しlandscape mode
て選択をクリックすると、オーバーレイするにはアイテムが多すぎて、代わりに全画面ポップアップが表示されます。次に、このフルスクリーンポップアップを閉じようとすると、次の2つのいずれかが発生します。
1)ページが最初にロードされたとき、ポップアップはまったく閉じません。タッチイベントにはまったく反応しません。
2)Webビューでページのコンテンツを再読み込みして再試行すると、ポップアップを閉じようとするとUIWebView全体が表示されなくなります。このシナリオは、ページの2回目以降のすべてのロードで発生します。
奇妙なことに、アプリケーションをデバッグモードで実行すると、ポップアップからアイテムを選択しようとしたり、 Xをクリックして閉じたりしても、例外がスローされません。Webビューが消えるだけです。Webビューがこのタブの背景画像をカバーしているため、UITabBarController
あるタブを除くすべてのタブに背景画像が表示されているため、Webビューがなくなったことがわかります。UIWebView
ポップアップを閉じようとすると、突然背景画像が空の画面に表示されます...これはWebビューがなくなったことを意味します。
私は本当に自分のコンテンツでカスタム選択メニューを使用できる必要があるhtml5
ので、他の誰かが以前にこれに遭遇し、ここで何が起こっているのかを知っていることを望んでいます。それで、誰かがこの奇妙な振る舞いを引き起こしているものを知っているかUIWebView
、この問題の回避策を知っていますか?
私iPad
は実行中のiOS
バージョン5.0.1 (9A405)
であり、jQuery Mobile
私が試したバージョンはとです。この同じ問題は、これらのバージョンの両方で発生します。私または開発のセットアップに関する他の情報が必要な場合はお知らせください。alpha 4.1
1.1.0
jQuery Mobile
iPad
アップデート:
UIWebViewが消えることについて私が上で言ったことを無視してください。それは実際には起こっていません。実際、Webビューで例外が発生し、アプリケーションパッケージに埋め込まれたエラーhtmlページへのリダイレクトが発生しています。このエラー画面の背景画像はと同じであるUITabBarController
ため、間違った結論にジャンプします。したがって、Webビューでいくつかの例外が発生していることがわかりましたが、それでも非常に多く発生しています。:)もっと知ったらアップデートを投稿します。
アップデート2:
私は今、何が悪いのかを知っていますが、それを解決する方法はまだよくわかりません。これが起こっていることです:ポップアップがクリックされると、URLにjQuery Mobile
追加されます。#&ui-state=dialog
他のブラウザでは、この変更は閲覧履歴に反映されているため、閲覧履歴に対してback
行われることでポップアップが閉じられます。私のUIWebViewの場合、URLへの変更は履歴に反映されていないため、[閉じる]をクリックしても何も起こらない(履歴が空)か、前に戻る前に読み込まれる背景画像のみが表示されるプリロード画面に戻ります。実際のコンテンツが読み込まれます)。