gpt4 book ai didi

javascript - Cordova Ionic 键盘插件在 “Init” 上完全禁用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:23:33 27 4
gpt4 key购买 nike

我有以下问题,我需要完全禁用 native 键盘。键盘应该只在我调用 show() 时显示,而在我调用 close() 函数时隐藏(这将位于一个按钮上,供用户切换键盘)。单击字段和焦点时显示的键盘需要完全禁用。

在 Stackoverflow 上我发现了这个:InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);im.hideSoftInputFromWindow(editText.getWindowToken(), 0);

所以我的想法是在“Init”(IonicKeyboard.java 中的第 52 行)中我需要更改它。

if ("init".equals(action)) {
cordova.getThreadPool().execute(new Runnable() {
public void run() {

//new Logic on init
View v = cordova.getActivity().getCurrentFocus();
((InputMethodManager) cordova.getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0);

DisplayMetrics dm = new DisplayMetrics();
cordova.getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
final float density = dm.density;

//http://stackoverflow.com/a/4737265/1091751 detect if keyboard is showing
final View rootView = cordova.getActivity().getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
OnGlobalLayoutListener list = new OnGlobalLayoutListener() {
int previousHeightDiff = 0;
@Override
public void onGlobalLayout() {
Rect r = new Rect();
//r will be populated with the coordinates of your view that area still visible.
rootView.getWindowVisibleDisplayFrame(r);

PluginResult result;

int heightDiff = rootView.getRootView().getHeight() - r.bottom;
int pixelHeightDiff = (int)(heightDiff / density);
if (pixelHeightDiff > 100 && pixelHeightDiff != previousHeightDiff) { // if more than 100 pixels, its probably a keyboard...
String msg = "S" + Integer.toString(pixelHeightDiff);
result = new PluginResult(PluginResult.Status.OK, msg);
result.setKeepCallback(true);
callbackContext.sendPluginResult(result);
}
else if ( pixelHeightDiff != previousHeightDiff && ( previousHeightDiff - pixelHeightDiff ) > 100 ){
String msg = "H";
result = new PluginResult(PluginResult.Status.OK, msg);
result.setKeepCallback(true);
callbackContext.sendPluginResult(result);
}
previousHeightDiff = pixelHeightDiff;
}
};

rootView.getViewTreeObserver().addOnGlobalLayoutListener(list);


PluginResult dataResult = new PluginResult(PluginResult.Status.OK);
dataResult.setKeepCallback(true);
callbackContext.sendPluginResult(dataResult);
}
});
return true;
}
return false; // Returning false results in a "MethodNotFound" error.
}

遗憾的是,这根本不起作用......

我想我也必须更改关闭/显示功能,但我不确定正确的代码是什么,而且我不知道此更改是否会影响其他键盘行为。 (但我基本上需要 Focus without Keyboard)

我也找到了这个Cordova Plugin

这看起来很有前途,但我决定在 Ionic Keyboard Plugin 中更改它,因为我也需要在 Windows 中有相同的行为。很高兴有人能在这里帮助我。

问候克里斯托弗

最佳答案

这可以通过使用 ng-disabled 禁用所有输入并稍后使用 Ionic Keyboard Plugin 显示键盘来实现。 .

如果您不希望输入在禁用时显示不同,您可以使用 :disabled 选择器用 CSS 覆盖此样式。

加载时隐藏:

<input ng-disabled="hideKeyboard">
hideKeyboard = true;

显示功能:

<input ng-disabled="hideKeyboard">
function showKeyboard(){
hideKeyboard = false;
cordova.plugins.Keyboard.show();
}

关于javascript - Cordova Ionic 键盘插件在 “Init” 上完全禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36786551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com