gpt4 book ai didi

cordova - 检测android软键盘显示/隐藏事件

转载 作者:行者123 更新时间:2023-12-03 22:23:25 25 4
gpt4 key购买 nike

我正在尝试检测 showKeyboardhidekeyboard phonegap 上的事件。为此,在 deviceready事件我放置了以下代码:

  bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function() {
document.addEventListener("menubutton",app.onMenuKeyPress,false);
document.addEventListener("backbutton",navigateBack,false);
document.addEventListener("hidekeyboard", onKeyboardHide, false);
document.addEventListener("showkeyboard", onKeyboardShow, false);
},
这里 backbutton事件正在被触发并且工作正常但是 hidekeyboardshowkeyboard事件永远不会被触发。
为了检测它,我尝试使用 window.onresize事件,在浏览器中有效。以下是它的代码:
window.onresize = function(){
var screenHeight = $(window).height();
alert(screenHeight);
var diff = screenInitialHeight - screenHeight;
var newHeight = screenInitialHeight-diff;
alert(newHeight);
$('#mainpage').height(newHeight);
$('#nav_container').height(newHeight);
}
但是这段代码也没有在显示或隐藏键盘上执行。此功能仅在第一次应用时执行。开始了。我在某些地方看到,对于某些人来说,这些事件正在起作用,所以我认为我这边出了点问题,可能是在某些配置文件等中。所以以下是 androidmanifest.xml 代码:
    <?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="1.0.0" android:windowSoftInputMode="adjustPan" package="com.phonegap.move_custom" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:largeHeap="true">
<activity android:configChanges="keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:name="move_custom" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
</manifest>
如果需要更改任何内容,请告诉我。此外,如果这些事件在某人的应用程序中有效,请分享您的应用程序。这样我就可以尝试检查配置和代码,为什么它在我的应用程序中不起作用。所有良好的努力将不胜感激。好像我已经接近但错过了一些东西。因此,您能说出的任何内容都可能会有所帮助。
    @Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

if (getResources().getConfiguration().orientation == 2) {
super.setIntegerProperty("splashscreen", R.drawable.splash);
}
else {
super.setIntegerProperty("splashscreen", R.drawable.splashportrait);
}

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

super.loadUrl(Config.getStartUrl(), 3000);
}

最佳答案

显然 showkeyboard/hidekeyboard 事件不会触发 当您运行应用程序时 全屏模式 (例如,顶部没有状态栏)因为键盘弹出时屏幕大小不会改变。
https://issues.apache.org/jira/browse/CB-392
如果您不希望您的应用全屏运行:
首先试试这个,让我们看看它是否将您的问题缩小到事件触发或它在事件触发时尝试调用的函数。

function onDeviceReady() {
alert("Device Ready");
document.addEventListener("showkeyboard", function(){ alert("Keyboard is ON");}, false);
document.addEventListener("hidekeyboard", function(){ alert("Keyboard is OFF");}, false);
}
我已经在 Android 4.2 和 4.3 上对此进行了测试,两者都运行良好。
笔记:
要关闭全屏:
删除 NoTitleBar来自您的 AndroidManifest.xml :
android:theme="@android:style/Theme.Black.NoTitleBar
和/或 将这些行添加到 onCreate您的 中的方法MainActivity.java :
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

关于cordova - 检测android软键盘显示/隐藏事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20081949/

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