2012-12-11 3 views

Antwort

23

Im Fokus window.scrollTo (0,0); Dies verhindert, dass Tastatur von Hochschieben webview vollständig

$('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. 
}); 

Wenn Sie nicht einen statischen Wert für Ihre Y Scrollposition einstellen wollen, können Sie diese short plugin I've written that automatically aligns the keyboard underneath the input field verwenden. Es ist nicht perfekt, aber es macht den Job. rufen Sie diese einfach auf Fokus, wie oben gezeigt:

setKeyboardPos(e.target.id); 
+1

Es funktioniert! Vielen Dank !!! – Yajap

+3

Es funktioniert nicht auf meinem iPad2/iOS6. a "setTimeout (function() {windows.scrollTo (0, 0);}, 0)" kann es beheben, aber manchmal kann man immer noch eine Wurf-Jitter-Animation sehen. – Imskull

11

dieses Problem gelöst driftyco/ionischer-plugins-Tastatur (https://github.com/driftyco/ionic-plugins-keyboard)

Erste Tastatur-Plugin installieren mit:

cordova plugin add com.ionic.keyboard 

Jetzt Sie kann I) entweder deaktivieren native Tastatur Scrollen:

cordova.plugins.Keyboard.disableScroll(true); 

oder II) hören auf native.keyboardshow Ereignis in deviceready und blättern Sie nach oben, wenn Tastatur zeigt:

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

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

ich verwendet, um die II) Ansatz, weil ich die animierte Scrollen in meinem Fall gefallen. Wenn Sie nicht mit der Animation gehen wollen, ersetzen Sie die entsprechende Zeile mit window.scrollTo(0, 0);. Aber ich habe Angst, dass Sie in diesem Fall wieder mit diesem "Wurf Jitter Animation" umgehen müssen. Imskull schrieb über.

+0

Nahm Ansatz 1, funktioniert wie erwartet! – commonpike

+0

Wenn WKWebView (iOS) verwendet wird, wird cordova.plugins.Keyboard.disableScroll (true) nicht zugelassen; , scheint, als würde ich versuchen II) und sehen, was passiert. –

4

Ich hatte das gleiche Problem und keine der obigen Lösungen half mir , aber ich fand einen einfachen Weg, um daran vorbei zu gehen.

In der Plattform/android Ordner mit dem manifest.xml und in der Haupt-Aktivitäts-Tag öffnen ersetzen Sie das android: windowSoftInputMode = "adjustResize" -Attribut mit Android: windowSoftInputMode = "adjustPan"

jetzt die Tastatur Ihre Inhalte überlagern .

Ich hoffe, es wird jemandem helfen.

+0

Danke, dass du mir eine Menge Zeit gespart hast. – Francesco

+0

Sauber und einfach danke –

2

stellen Sie sicher, dies in Ihrer config.xml

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

Dies sollte die akzeptierte Antwort sein, da es das Problem den richtigen Weg löst – pinturic

+0

Gibt es ein modernes Äquivalent dieser Option? Es scheint nicht mehr zu existieren. – Coo

1

ich buchstäblich durch 100 Antworten GING, bevor ich mich zu finden hatte zu beantworten. Also hier ist es wie Scroll von UI auf IOS zu deaktivieren. einfach, wenn Cordova lädt, fügen Sie dies hinzu. Bitte installieren:

cordova plugin add ionic-plugin-keyboard --save 

und führen Sie dann cordova prepare dieses neue Plugin in Ihrem www-Ordner zu laden.

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

Und das ist es. Bitte lassen Sie mich wissen, ob dies hilfreich war. Ich werde froh sein, mehr zu antworten.

Verwandte Themen