Https://stackoverflow.com/a/19249775/1502287 cevabı benim için çalıştı, ancak kamera eklentisi (ve muhtemelen diğerleri) ve "height = device- yükseklik "(yükseklik kısmının ayarlanmaması, benim durumumda klavyenin görünümün üzerinde görünmesine ve yol boyunca bazı girişlerin gizlenmesine neden olur).
Kamera görünümünü her açtığınızda ve uygulamanıza geri döndüğünüzde, viewWillAppear yöntemi çağrılır ve görünümünüz 20 piksel küçülür.
Ayrıca, görüntü alanı için cihaz yüksekliği, içeriğin kaydırılabilir olmasını ve web görünümünden 20 piksel daha yüksek olmasını sağlayan fazladan 20 piksel içerir.
İşte kamera sorununun tam çözümü:
MainViewController.h içinde:
@interface MainViewController : CDVViewController
@property (atomic) BOOL viewSizeChanged;
@end
MainViewController.m'de:
@implementation MainViewController
@synthesize viewSizeChanged;
[...]
- (id)init
{
self = [super init];
if (self) {
self.viewSizeChanged = NO;
}
return self;
}
[...]
- (void)viewWillAppear:(BOOL)animated
{
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7 && !self.viewSizeChanged) {
CGRect viewBounds = [self.webView bounds];
viewBounds.origin.y = 20;
viewBounds.size.height = viewBounds.size.height - 20;
self.webView.frame = viewBounds;
self.viewSizeChanged = YES;
}
[super viewWillAppear:animated];
}
Şimdi görüntü alanı sorunu için, cihaz hazırlığı olay dinleyicinize şunu ekleyin (jQuery kullanarak):
if (window.device && parseFloat(window.device.version) >= 7) {
$(window).on('orientationchange', function () {
var orientation = parseInt(window.orientation, 10);
var height = 300;
var width = 320;
if (orientation !== -90 && orientation !== 90 ) {
height = document.documentElement.clientHeight - 20;
} else {
width = document.documentElement.clientHeight + 20;
}
document.querySelector('meta[name=viewport]')
.setAttribute('content',
'width=' + width + ',' +
'height=' + height + ',' +
'initial-scale=1.0,maximum-scale=1.0,user-scalable=no');
})
.trigger('orientationchange');
}
İşte diğer sürümler için kullandığım görüntü alanı:
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0" />
Ve şimdi her şey iyi çalışıyor.