2013-09-24 16 views
19

Próbuję przekompilować aplikację na iOS 7, ponieważ nic z dotychczasowych nie działa. Jednym z wielu problemów jest to, że używam niektórych danych wejściowych w widoku UIWeb. Wprowadzanie tekstu, zbieracze itp.Elementy wejściowe iOS 7 przenoszenie elementów o ustalonej pozycji

Teraz, gdy pojawia się biała klawiatura iOS 7, wszystkie dolne, stałe elementy strony (takie jak przyciski potwierdzenia) są przewijane w górę, tak jakby górna część wirtualnej klawiatury jest nowym dnem mojego interfejsu UIWebView. Jest to zasadniczo inne zachowanie niż iOS6.x

Czy istnieje jakaś magiczna sztuczka, aby wirtualne działanie klawiatury działało tak, jak było kiedyś, bez wstrzykiwania JS/CSS do webView?

Odpowiedz

44

Naprawiono problem związany z moją aplikacją Cordova. Nie jestem pewien, czy to dotyczy ciebie, ale na wszelki wypadek.

Sprawdź html meta tagi na coś takiego:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"> 

Wymień go w ten sposób:

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" /> 
+0

Cieszę się pomóc! Przyjmij odpowiedź, aby inni mogli zobaczyć :) – Opossum

+3

Czy próbowałeś tego z aplikacją krajobrazową? "wysokość urządzenia", gdy w krajobrazie wciąż jest 1024, więc dno ekranu jest poza zasięgiem. –

+0

Moja aplikacja obraca się w krajobraz po włączeniu i nie widziałem tego problemu. Jeśli to zobaczę, dam ci znać. – Opossum

6

natknąłem się dokładnie tego samego problemu & zrezygnował po dwóch dniach eksperymentowania. Wygląda na to, że: a) wszystkie dolne elementy są skierowane ku górze, tak aby ich dolne przesunięcie było względem górnej krawędzi klawiatury c) wszystkie górne ustalone elementy pozostają w swojej pierwotnej pozycji (nie przesuwaj się w górę, tak jak poprzednio) - zauważ, że najlepsze elementy absolutne działają poprawnie.

Jedynym rozwiązaniem znalazłem mieć niestandardową iPad arkusza stylów, który zastępuje wszystkie stałe elementy z elementami bezwzględnych ustawia właściwość dolną css na auto i wykorzystuje top zamiast

-1

Opposum, rozwiązanie pracował dla mnie, ale tylko wtedy, gdy Skala została ustawiona na 1,0. Jeśli ustawię ją na 0.9, będzie to wyglądało tak, jak przed proponowaną poprawką. Ustawiłem początkową skalę, maksymalną skalę i minimalną skalę na 0.9, a efekt odbicia nieruchomych obiektów, gdy pojawiła się klawiatura, wciąż się zdarzał.

+1

Oszukając zawartość meta, wydaje się, że problemem jest minimalna skala. Po zignorowaniu istnieje problem związany z ustaloną pozycją. Po ustawieniu wartości mniejszej niż 1,0 istnieje ustalony problem związany z pozycją. Po ustawieniu wartości większej lub równej 1,0 problem związany z ustaloną pozycją zostaje rozwiązany. –

+0

To nie jest odpowiedź, a jedynie spostrzeżenie; w związku z tym przynależy jako nuta. – Lev

8

W naszym przypadku naprawiłoby to się tak szybko, jak użytkownik przewija. Więc to jest poprawka używaliśmy do symulacji zwój na blur na dowolnym input lub textarea:

$(document).on('blur', 'input, textarea', function() { 
    setTimeout(function() { 
     window.scrollTo(document.body.scrollLeft, document.body.scrollTop); 
    }, 0); 
}); 
+0

Wymuszenie przewijania w ten sposób działało dla mnie. Poprawka widoczna poniżej * może * działać, ale może również powodować problemy z aplikacjami Cordova, gdzie width = device-width, height = device-height, może prowadzić do problemów z przewijaniem. https://issues.apache.org/jira/browse/CB-4323 – zungaphobia

+0

To rozwiązanie wydaje się być jedynym, które niczego nie psuje. Możesz także sprawdzić agenta użytkownika, aby ograniczyć to tylko do urządzeń mobilnych. var is_mobile = navigator.userAgent.match (/ (iPad) | (iPhone) | (iPod) | (android) | (webOS)/i); –

Powiązane problemy