Intereting Posts
Компиляция Android JNI для OpenCV на Mac OSX HttpURLConnection для отправки изображений, аудио и видео файлов с параметром может (String или Json String) Android PopupWindow Enter Exit Анимация не работает на Зефир (23) Включение режима «навигации» в API-интерфейсе skobbler android Com.tools.fd.runtime.BootstrapApplication не будет работать, если вы не обновите сервисы Google Play Дублированные файлы, скопированные в APK, включающие библиотеки Joda Time и Common IO в Android-проекте Прямая трансляция на iPhone / Android: RTMP – HTTP Android Google Maps onMapReady хранит GoogleMap Почему он говорит «устарело» для метода, когда его единственный, который я могу использовать для выбранного уровня API? Функция, вызванная во время обратной кнопки, нажимает на Android Не удается запустить активность на Android через Unity Как получить отпечаток SHA1 от Mavericks Высота совпадения Match_parent внутри макета с высотой wrap_content Gradle не может найти classpath для плагина android Как сделать обратный вызов после полного отображения представления?

Не удается получить backspace для работы в codemirror, под Phonegap на Android 4.x?

Мне нужен веб-редактор текста / кода, который ведет себя хорошо, для моего приложения.

Я пытаюсь использовать codemirror под Phonegap, и в настоящее время у меня возникают проблемы с возвратом для работы с ранее введенным текстом. Это огромная проблема для моего случая использования. Теперь я посмотрел вокруг, и похоже, что это не прямая проблема с codemirror, а, скорее, андроид и виртуальная клавиатура malarkey, см. Этот вопрос: Android: Backspace в WebView / BaseInputConnection

Я использую Phonegap версии 2.6.0, последнюю версию codemirror (по состоянию на прошлую ночь) и тестирование на Android 4.2.2. Это похоже на WebView на Android, может ли кто-нибудь проверить, что это не проблема в iOS?

Я не прочь сделать какой-то код Java, чтобы исправить эту проблему, но я не уверен, как «подключиться» к внедрению кордовы WebView, так как весь код, который мне открыт, состоит из:

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") } } 

Если я не буду рассматривать исходное дерево Кордоваса. По сути, я хочу знать, как я могу реализовать решение по ссылке выше в моем случае. Любая помощь очень ценится!

Override 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)); } } 

Создайте в CustomWebView, который расширяет интерфейс 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; } } 

Создайте свой собственный InputConnection:

 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); } }