サミュエルの対応で問題は解決するはずですが、別の副作用も生じます。たとえば、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()"];
}
}