2012-01-09 4 views
0

私はSencha Touch 1.1アプリケーションを維持していますが、私はAndroidタブレット(特に、Samsung Galaxy Tab S、Android 3.1)で気づいた問題を解決しようとしています。Senchaタッチパネル/日付ピッカーレンダリングの問題

ログインフォームには、SenchaのテキストフィールドとSenchaの日付ピッカーフィールドの2つのフィールドがあります。ユーザーがテキスト入力をフォーカスしてから日付ピッカーフィールドにフォーカスを合わせると、仮想キーボードが折りたたまれ、仮想キーボードが終了したところの上にdatepickerが表示されます(ページ中央付近)。

これは、ユーザーが日付ピッカーフィールドを最初にフォーカスしている場合には発生しません。これは、Senchaが、キーボードが表示されているか隠されているときにスローされるwindow resizeイベントを適切に処理していないことと関係しており、それに応じて包含ビュー・オブジェクトのディメンションをそれに応じて再計算できません。

このビューはExt.Panel(タイトル)を拡張していますが、resizeイベントが発生したときにdoLayoutメソッドとdoComponentLayoutメソッドを使用しようとしましたが、どちらも機能していないようです。

アイデア?

+0

私はすぐにSencha 2.0が出てくることを知っています。Androidで多くの問題に対処していると聞きました。 – ToddBFisher

答えて

2

これは難しく、キーボードを隠すアニメーションが原因で、コンテナの高さが完全に元に戻らないということに関連しています。

まず、ピッカーを表示する前に1〜2秒の長い遅延を追加して、これが問題であることを確認してください。

もしそうであれば、私の心に来てトリッキーな回避策があります:

  • 保存コンテナパネルの高さ(onorientationchangeを更新する必要があります)
  • ピッカーが呼び出されると(あなたはどれを把握する必要がありますが、 beforeaddbeforerenderまたはbeforeshowのいずれか)を選択した場合は、高さが低くないことを確認するか、ピッカーの操作をキャンセルします。
  • 高さが復元され、下限が正しくなるまで、間隔を数ミリ秒後に確認する間隔を設定します。

さらなる問題を避けるために、orientationchangeがコンテナパネル上で発生している間に、ピッカーの表示をキャンセルすることもできます。

これは、表示されているキーボードでパネルの高さまたはビューポートの高さが変更されていることを前提としています。変更されていないプロパティを探したり、ピッカーを表示する前に

+0

ありがとう!これがまだうまくいきませんでしたが、これは正しい方向に向かいました。Sencha 2.0プレビューのソースに埋め込まれた同様のアプローチが見つかりました。 今、私はそれを移植する作業をしなければなりません... – jszpila