2013-09-23 27 views
3

我使用優秀的英特爾AppFramework我的PhoneGap /科爾多瓦應用程序的UI,但由於iOS7,有時,當我打開鍵盤,底部菜單上升(它不應該): http://screencloud.net/v/9omt 然後,當我關閉鍵盤,底部菜單停留在屏幕的中間: http://screencloud.net/v/DgRf錯誤與iOS7顯示了軟鍵盤的PhoneGap和英特爾應用程序框架

它看起來像錯誤是在hideAddressBar功能。我禁用了該功能,現在,菜單總是上升,但至少,當我關閉鍵盤時,它總是完成。

(我們使用的1.0版本。我們計劃儘快更新,但我們在緊急釋放的中間)

預先感謝任何幫助或方向,

回答

0

我在與你一樣的船,並試圖找出一個工作解決方案。我正在與這裏的主要ios phoengap貢獻者之一工作:https://issues.apache.org/jira/browse/CB-3020

他發佈了一個更新的解決方案和3.1應該即將推出修補程序的修復。

我仍然在運行了一些問題,並在底部的黑條隨機出現在某些網頁。

頭向科爾多瓦JIRA網站,並添加在您的測試細節助陣。

謝謝!

+0

感謝您的鏈接。我使用科爾多瓦2.8,元視口做了竅門。 – Samuel

9

該解決方案適用於我。我曾在我的index.html以下meta標籤:

<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" /> 

最重要的屬性是高度=設備高度,它說,視圖大小將始終是設備的大小。

編輯:有橫向和iOS7與iPad的錯誤。視口的CSS大小是錯誤的...

+0

感謝您添加解決方案。我和我自己的html5框架有同樣的問題,這個meta標籤修復了它。 –

+0

@Samuel:謝謝。關於iPad的bug,我觀察到在設置height = device-height之後,無論方向如何,視口高度始終爲1024。你有沒有面對同樣的問題?你找到了解決辦法嗎? – Nilesh

+0

您應該接受您自己的答案@Samuel – williamle8300

0

雖然塞繆爾的迴應必須解決這個問題,它會產生其他副作用。例如,在PhoneGap的3.3增加高度=設備高度視口,你會得到每一個屏幕滾動(即使在頁面上的元素都沒有大到全屏幕)。在我們的案例中,唯一的解決方案是found here,它在Phonegap上的打開鍵盤上添加了一個通知處理函數,該函數調用一個javascript函數,然後隱藏此函數的固定頁腳,並在焦點/模糊函數中再次隱藏/顯示頁腳。使用jQuery Mobile的一個例子是連接的,但你可以更新它使用一個不同的框架:

於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()"]; 
    } 
} 
+0

我使用PhoneGap Build來製作所有我的可執行文件(我在Windows上)。該文件僅在iOS平臺上可用,或者我可以在哪裏找到它?如果是這樣,是否有任何方法來實施PG Build開發的此修復? –

+0

這個文件包含在iOS的Phonegap(./platforms/ios/APPNAME/Classes/MainViewController.m)中,從Windows你不能編譯iOS(可能使用phonegap雲編譯系統,但我不知道它)。 –

相關問題