雖然塞繆爾的迴應必須解決這個問題,它會產生其他副作用。例如,在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()"];
}
}
感謝您的鏈接。我使用科爾多瓦2.8,元視口做了竅門。 – Samuel