3

phonegap / cordova アプリの UI に優れた Intel AppFramework を使用していますが、iOS7 以降、キーボードを開くと下のメニューが表示されることがあります (表示されないはずです): http://screencloud.net/v/9omt そして、キーボードを閉じると、下部のメニューが画面の中央に残ります: http://screencloud.net/v/DgRf

バグは hideAddressBar 関数にあるようです。機能を無効にしたところ、メニューは常に表示されますが、少なくとも、キーボードを閉じると常に表示されます。

(1.0版を使用しております。近日中にアップデート予定ですが、緊急リリース中です)

事前に助けや指示をありがとう、

4

3 に答える 3

9

この解決策は私にとってはうまくいきました。index.html に次のメタ タグがありました。

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

そして、これを次のように変更します。

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" />

最も重要な属性はheight=device-heightです。これは、ビューのサイズが常にデバイスのサイズになることを示しています。

編集: 横向きの iPad と iOS7 にはバグがあります。ビューポートの CSS サイズが間違っています...

于 2013-09-24T18:38:28.670 に答える
0

私はあなたと同じ船に乗っており、実用的な解決策を見つけようとしています. 私はここで ios phoengap の主要な貢献者の 1 人と協力しています: https://issues.apache.org/jira/browse/CB-3020

彼は更新されたソリューションを投稿し、3.1 はパッチが適用された修正と共に間もなくリリースされるはずです。

まだいくつかの問題が発生しており、特定のページで下部にある黒いバーがランダムに表示されます。

cordova jira サイトにアクセスして、テストの詳細を追加してください。

ありがとう!

于 2013-09-23T20:38:13.517 に答える
0

サミュエルの対応で問題は解決するはずですが、別の副作用も生じます。たとえば、Phonegap 3.3 でheight=device-heightをビューポートに追加すると、すべての画面でスクロールが発生します (ページ上の要素が画面いっぱいに表示されるほど大きくない場合でも)。私たちの場合、ここにある唯一の解決策は、Phonegap の開いているキーボードに通知ハンドラーを追加して、javascript 関数を呼び出し、この関数で固定フッターを非表示にし、フォーカス/ぼかし関数でフッターを再び非表示/表示することでした。 . jquery モバイルを使用した例が添付されていますが、別のフレームワークを使用するように更新できます。

JavaScript の場合:

  $(document).on('focus','input, select, textarea',function() {
    if( device.platform=== 'iOS' && parseInt(device.version.substring(0,1)) >= 7){
        if($(this).attr('readonly')===undefined){
            $("[data-role=footer]").hide();
        }
    }  
  });

  $(document).on('blur','input, select, textarea',function(){
    if( device.platform=== 'iOS' && parseInt(device.version.substring(0,1)) >= 7){
        if($(this).attr('readonly')===undefined){
            $("[data-role=footer]").show();
        }
    }
    setTimeout(function() {
        window.scrollTo(document.body.scrollLeft, document.body.scrollTop);
    }, 0);
  });

  function hideFooter(){
    if( device.platform=== 'iOS' && parseInt(device.version.substring(0,1)) >= 7){
        if($(this).attr('readonly')===undefined) {
            $("[data-role=footer]").hide();
        }
    }
  }

そして phonegap MainViewController.m で:

- (id)init
{
    self = [super init];
    if (self) {
        // Uncomment to override the CDVCommandDelegateImpl used
        // _commandDelegate = [[MainCommandDelegate alloc] initWithViewController:self];
        // Uncomment to override the CDVCommandQueue used
        // _commandQueue = [[MainCommandQueue alloc] initWithViewController:self];
        }

    //fix for ios7 footer is scrolled up when the keyboard popsup.
    [[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

    return self;
}

-(void)keyboardWillShow:(NSNotification*)notification{
    if (IsAtLeastiOSVersion(@"7.0")){
        [self.webView stringByEvaluatingJavaScriptFromString:@"hideFooter()"];
    }
}
于 2014-03-25T18:33:46.427 に答える