No se puede obtener backspace para trabajar en codemirror, bajo Phonegap en Android 4.x?

Necesito un editor de texto / código basado en la web que se comporte bien, para mi aplicación.

Estoy tratando de usar codemirror bajo Phonegap y actualmente estoy teniendo problemas para obtener backspace para trabajar para el texto introducido previamente. Este es un gran problema para mi caso de uso. Ahora he tenido un vistazo alrededor y parece que no es un problema directo codemirror, sino más bien el malarkey teclado android y virtual, ver esta pregunta: Android: Backspace en WebView / BaseInputConnection

Estoy usando Phonegap versión 2.6.0, última versión codemirror (como de anoche) y pruebas en Android 4.2.2. Esto parece ser específico de WebView en Android, ¿podría alguien verificar que no es un problema en iOS?

No me opongo a hacer algún código Java para corregir el problema, pero no estoy seguro de cómo 'enganchar' en la implementación del cordova de WebView, ya que todo el código que se expone a mí consiste en:

package com.mycompany.MyAppName; import android.os.Bundle; import org.apache.cordova.*; public class MyAppName extends DroidGap{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); // Set by <content src="index.html" /> in config.xml super.loadUrl(Config.getStartUrl()); //super.loadUrl("file:///android_asset/www/index.html") } } 

A menos que se supone que debo buscar en el árbol fuente de Cordovas. Esencialmente lo que quiero saber es cómo puedo implementar la solución en el enlace de arriba en mi caso. ¡Cualquier ayuda es muy apreciada!

Método de actividad de sobrescritura init:

 public class ProjectName extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); // Don't forget this, you'll get runtime error otherwise! // The following does the trick: super.appView.getSettings().setUseWideViewPort(true); super.appView.getSettings().setLoadWithOverviewMode(true); // Set by <content src="index.html" /> in config.xml super.loadUrl(Config.getStartUrl()); //super.loadUrl("file:///android_asset/www/index.html") super.setIntegerProperty("loadUrlTimeoutValue", 10000); } /** * Create and initialize web container with default web view objects. */ @Override public void init() { CordovaWebView webView = new CustomWebView(ProjectName.this); CordovaWebViewClient webViewClient; if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { webViewClient = new CordovaWebViewClient(this, webView); } else { webViewClient = new IceCreamCordovaWebViewClient(this, webView); } this.init(webView, webViewClient, new CordovaChromeClient(this, webView)); } } 

Crear en CustomWebView que se extiende CordovaWebView

 public class CustomWebView extends CordovaWebView{ public CustomWebView(Context context) { super(context); } @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { MyCustomInputConnection connection = new MyCustomInputConnection(this, false); return connection; } } 

Cree su InputConnection personalizado:

 public class MyCustomInputConnection extends BaseInputConnection{ public MyCustomInputConnection(View targetView, boolean fullEditor) { super(targetView, fullEditor); } @Override public boolean deleteSurroundingText(int beforeLength, int afterLength) { // magic: in latest Android, deleteSurroundingText(1, 0) will be called for backspace if (beforeLength == 1 && afterLength == 0) { // backspace return super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)) && super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL)); } return super.deleteSurroundingText(beforeLength, afterLength); } } 
  • Cómo proporcionar entrada a un campo de entrada webView mediante programación en Android Kitkat (4.4)
  • Android 5 - Cambia la ruta de entrada de audio predeterminada para usar una tarjeta USB externa en Streaming
  • ¿Puedes hacer una entrada de EditText de derecha a izquierda?
  • Cómo utilizar InputConnectionWrapper?
  • Introduzca la manipulación de claves en Libgdx TextField
  • Android editText límite máximo
  • Android: Añadir imageButton encima de un teclado personalizado
  • ¿La implementación de SQLite de Android desinfecta la entrada a través del método SQLiteDatabase.insert ()?
  • El cursor de Android 4.0 EditText siempre es invisible para editable = false
  • Desactivación de la autocompletar para textarea y campos de entrada en Android Cordova-app
  • Ocultar o quitar el botón del teclado en la pantalla CardIO Scann (Android)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.