2012-12-11 14 views

Odpowiedz

23

Po ustawieniu ostrości ustaw window.scrollTo (0,0); Zapobiega klawiaturę z winduje webview całkowicie

$('input').on('focus', function(e) { 
    e.preventDefault(); e.stopPropagation(); 
    window.scrollTo(0,0); //the second 0 marks the Y scroll pos. Setting this to i.e. 100 will push the screen up by 100px. 
}); 

Jeśli nie chce ustawić wartość statycznego dla swojej pozycji przewijania Y, zachęcamy do korzystania z tego short plugin I've written that automatically aligns the keyboard underneath the input field. Nie jest doskonały, ale spełnia swoją rolę. Wystarczy zadzwonić to na ostrości, jak pokazano powyżej:

setKeyboardPos(e.target.id); 
+1

To działa! Dziękuję Ci !!! – Yajap

+3

To nie działa na moim iPadzie2/iOS6. "setTimeout (function() {windows.scrollTo (0, 0);}, 0)" może to naprawić, ale czasami nadal możesz zobaczyć animację jittera. – Imskull

11

rozwiązać ten problem za pomocą driftyco/jonowe-plugins-klawiatura (https://github.com/driftyco/ionic-plugins-keyboard)

Najpierw zainstaluj wtyczkę klawiatury:

cordova plugin add com.ionic.keyboard 

Teraz można I) albo wyłączyć natywne przewijanie klawiatury:

cordova.plugins.Keyboard.disableScroll(true); 

lub II) nasłuchiwać native.keyboardshow imprezy w deviceready i przejdź z powrotem do góry, gdy klawiatura pokazuje:

window.addEventListener('native.keyboardshow', keyboardShowHandler); 

function keyboardShowHandler(e){ 
    setTimeout(function() { 
     $('html, body').animate({ scrollTop: 0 }, 1000); 
    }, 0); 
} 

użyłem podejście II), ponieważ lubiłem animowane przewijanie w moim przypadku. Jeśli nie chcesz korzystać z animacji, zamień odpowiedni wiersz na window.scrollTo(0, 0);. Ale obawiam się, że w takim przypadku znowu będziesz musiał poradzić sobie z tą "animacją jittera" Imskull.

+0

Przyjęto podejście 1, działa zgodnie z oczekiwaniami! – commonpike

+0

jeśli używasz WKWebView (iOS), to nie zezwala na cordova.plugins.Keyboard.disableScroll (true); , wydaje się, że spróbuję II) i zobaczę, co się stanie. –

4

Miałem ten sam problem i żadne z powyższych rozwiązań nie pomogło mi , ale znalazłem prosty sposób na obejście go.

na platformie Android/folderu i otworzyć manifest.xml w głównym tagu aktywności wymienić android: windowSoftInputMode = „adjustResize” atrybut z Androidem: windowSoftInputMode = „adjustPan”

teraz klawiatura zostanie nałożony treści .

Mam nadzieję, że komuś to pomoże.

+0

Dzięki za zaoszczędzisz mi dużo czasu. – Francesco

+0

Czyste i proste dzięki –

2

upewnić się o tym w swojej config.xml

<preference name="KeyboardShrinksView" value="true" /> 
+0

To powinna być zaakceptowana odpowiedź, ponieważ rozwiązuje problem we właściwy sposób. – pinturic

+0

Czy istnieje współczesny odpowiednik tej opcji? Wydaje się, że już nie istnieje. – Coo

1

dosłownie przeszedł 100 odpowiedzi przed musiałem znaleźć sobie odpowiedzieć. więc tutaj jest jak wyłączyć przewijanie interfejsu na IOS. po prostu gdy cordova się ładuje, dodaj to. Proszę zainstalować:

cordova plugin add ionic-plugin-keyboard --save 

a następnie wykonaj cordova prepare załadować tej nowej wtyczki w katalogu www.

document.addEventListener('deviceready', function(e){ 
    window.addEventListener('native.keyboardshow', function() { 
      cordova.plugins.Keyboard.disableScroll(true); 
     }); 
}); 

I to wszystko. Daj mi znać, jeśli to było pomocne. Chętnie odpowiem na więcej.

Powiązane problemy