Mobilne safari nie aktualizuje window.innerHeight, gdy klawiatura wyskoczy. (Przynajmniej w 9.3.5, i istnieje kilka odpowiedzi, takie jak this jednej z komentarzami powiedzenie, które wybuchły w iOS 8.2)Iphone safari nie zmienia rozmiaru ekranu przy otwartej klawiaturze
Apple documentation mówi used to say before they edited it że window.innerHeight wróci z iOS 10.
W iOS 10 obiekty WKWebView odpowiadają natywnemu zachowaniom Safari, aktualizując ich właściwość window.innerHeight, gdy wyświetlana jest klawiatura, i nie wywołują zdarzeń zmiany rozmiaru.
Muszę wiedzieć, co zrobić w międzyczasie, aby poradzić sobie z iphone safari, po prostu wypychając stronę internetową z widoku zamiast zmieniać rozmiar.
Mam aplikacji, która używa pozycjonowanie bezwzględne do wszystkiego i ma div z przepełnienie między nagłówka i stopki.
.mainContent {
position: absolute;
top: 50px;
bottom: 28px;
left: 0;
right: 0;
}
Plunker tutaj.
ekranu, działa zgodnie z oczekiwaniami na Androidzie:
Nie działa zgodnie z oczekiwaniami na iPhone:
podstawie this answer mam natywną JS drogę określenia, czy klawiatura iPhone'a jest otwarta,
document.getElementById('chat-input').addEventListener('focus', function(){
if(/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream){
console.log("IOS focus");
var scroll = window.scrollTop;
window.scrollTop = 10;
var keyboard_shown = window.scrollTop > 0;
window.scrollTop = scroll;
if(keyboard_shown){
console.log("keyboard");
}else{
console.log("no keyboard");
}
}
});
})();
Ale to nie faktycznie rozwiązać problem jak window.innerHeight
nie zmienia, więc nie wiem, jak duża klawiatura jest. może po prostu zrobić listę uchwał iPhone i ich wysokości klawiatury, a po prostu fatalny hardcoding osoba ...
można podać zrzut ekranu? Nie mam iPhone'a, ale chciałbym wiedzieć, o co tu chodzi. – Senthe
@Senthe Przepraszam, że trwało to tak długo, nie posiadam ani jednego i musiałem iść do pracy. Ale obrazy są teraz w toku. – mtfurlan
Teraz rozumiem. Nie sądzę, że tutaj można coś z tym zrobić. To samo dzieje się nawet z właściwością 'fixed'. Twoje "rozwiązanie" hardcoding prawdopodobnie nie będzie działać, ponieważ zakładam, że na iOS można zainstalować nie-natywną aplikację klawiatury. Gdybym był tobą, byłbym szczęśliwy, że przynajmniej ta dolna część, w której wpisujesz wiadomości, pozostaje we właściwym miejscu. : ( – Senthe