it-swarm.com.de

Cordova 3.4 - Tastaturereignis erkennen

Ich versuche, die showkeyboard- und hidekeyboard-Ereignisse in meiner Anwendung zu erkennen, die dank Cordova 3.4.0 und JQuery Mobile 1.4.2 ausgeführt werden. In der Konfigurationsdatei ist das Fullscreen-Attribut auf true gesetzt (ich brauche es).

Tatsache ist, dass ich in LogCat nicht lesen kann (fast weil es im Vollbildmodus ist):

SoftKeyboardDetect: Ignorieren Sie dieses Ereignis

Gibt es eine Lösung, um diese beiden Ereignisse zu erkennen? Ich habe einen alternativen Weg ausprobiert, indem ich Unschärfen und Fokusereignisse in meinem Eingabefeld entdeckte. Es funktioniert, aber wenn die Tastatur mit der Zurück-Taste geschlossen wird, werden diese Ereignisse nicht aufgerufen.

Also habe ich versucht, das backbutton -Ereignis zu erkennen, aber es funktioniert nicht ( http://simonmacdonald.blogspot.fr/2011/05/overriding-back-button-in-phonegap.html ).

11
Schnapse

Ich denke, das wird für Ihre Bedürfnisse funktionieren - 

document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady () {
    document.addEventListener('hidekeyboard', onKeyboardHide, false);
    document.addEventListener('showkeyboard', onKeyboardShow, false);
}

function onKeyboardHide() {
    console.log('onKeyboardHide');
}

function onKeyboardShow() {
    console.log('onKeyboardShow');
}

// bearbeiten

Da Sie sich nicht an diese Ereignisse anschließen können, benötigen Sie ein Plugin. Dieser hier wird den Trick tun

Um das Plugin zu installieren, cordova plugin add com.ionic.keyboard

// This event fires when the keyboard will be shown

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

function keyboardShowHandler(e){
    console.log('Keyboard height is: ' + e.keyboardHeight);
}

// This event fires when the keyboard will hide

window.addEventListener('native.keyboardhide', keyboardHideHandler);

function keyboardHideHandler(e){
    console.log('Goodnight, sweet prince');
}
18
Ross

Das Ionic Keyboard Plugin gibt Ihnen native.showkeyboard- und native.hidekeyboard -Ereignisse, die folgendermaßen verwendet werden können: Nach dem Hinzufügen zu Ihrem Projekt:

cordova plugin add https://github.com/driftyco/ionic-plugins-keyboard.git

benutze es so:

window.addEventListener('native.hidekeyboard', keyboardHideHandler);
window.addEventListener('native.showkeyboard', keyboardShowHandler);
function keyboardHideHandler(e){
    alert('Goodnight, sweet prince');
}
function keyboardShowHandler(e){
    alert('Keyboard height is: ' + e.keyboardHeight);
}

Zusätzliche Beschreibungen und Funktionen finden Sie unter github Dies funktionierte für mich in Cordova 3.4, wobei der Vollbildmodus in der Datei config.xml konfiguriert wurde. Die Tatsache, dass es 15036 downloads gibt, sagt viel aus, aber wie gesagt, ich habe es auch selbst mit Vollbild auf der genauen Cordova-Version verwendet (und es war eigentlich das einzige, was für mich funktionierte und es unterstützt ios auch)

5
Andreas

Hallo, wenn Sie showkeyboard und hidekeyboard events in einer phonegap-basierten Anwendung benötigen, müssen Sie die Vollbildoption entfernen, dann werden nur diese Events ausgelöst.

2
Arjun T Raj

Ich konnte hier keine Antworten bekommen, also dachte ich, ich würde meine Lösung teilen.

In meinem Szenario verwende ich eine Bootstrap-Tastengruppe, um zwischen den Bildschirmen zu navigieren. Bestimmte Bildschirme müssen <input/>-Felder mit Standardfokus haben. Nun, wenn ich mich auf ein Feld konzentriere, würde ich die Soft-Tastatur aufrufen. Ich habe versucht, die Tastatur auszublenden, wenn der neue <input/> angezeigt wurde, aber es scheint, als würde die Android-Tastatur unmittelbar nach dem Rendern der Seite angezeigt (nachdem mein Aufruf an Keyboard.hide(); ausgeführt wurde).

Meine Arbeit ist die Verwendung einer setTimeout, wie unten gezeigt.

$("#my_input").focus();
window.setTimeout(function(){
  Keyboard.hide();
}, 1);

Warum funktioniert das? Ich glaube, weil mein Rückruf weit genug in die Rückrufwarteschlange gestellt wird. 

HINWEIS: Möglicherweise wird die Soft-Tastatur immer noch schnell ein- und ausgeblendet. Ich habe keinen Ausweg gefunden.

0
aaronbartell