2016-09-09 16 views
9

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 ...

+0

można podać zrzut ekranu? Nie mam iPhone'a, ale chciałbym wiedzieć, o co tu chodzi. – Senthe

+0

@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

+0

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

Odpowiedz

2

Safari 10 Docs

Safari i WKWebView na iOS 10 nie zaktualizować właściwość window.innerHeight po wyświetleniu klawiatury. W poprzednich wersjach iOS WKWebView aktualizuje właściwość window.innerHeight po wyświetleniu klawiatury.

Wydaje docs stwierdzić teraz odwrotny zachowanie że zanotowany przez OP

+2

... Zmienili swoje wcześniejsze wersje. Jestem pod wrażeniem. "Zawsze byliśmy w stanie wojny ze Wschodnią" i tak dalej. https://web.archive.org/web/20160613195513/https://developer.apple.com/library/prerelease/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_10_0.html – mtfurlan

+0

ok, ale jak możemy poprawić problem? –

Powiązane problemy