我在使用带有 html 输入文本的 cordova 2.7 在 iOS 7 上开发电话间隙应用程序时遇到问题。当我选择输入文本时,键盘会弹出。但由于失去焦点,无法输入任何内容。我必须再次选择才能输入文字。
谁可以帮我这个事。
我遇到了类似的问题,键盘会出现,但文本框中没有显示任何类型的内容。我的是由 css 引起的 -
* {
-webkit-user-select: none; /* prevent copy paste */
}
我通过覆盖文本框的样式解决了这个问题 -
input[type="text"] {
-webkit-user-select: text;
}
在cordova应用程序中有一个配置文件config.xml,默认情况下cordova不允许您控制javascript调用的焦点,这意味着键盘可以“消失”
改变这个:
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
至
<preference name="KeyboardDisplayRequiresUserAction" value="false" />
然后只需为在 setTimeout 内点击时设置焦点的字段编写一个事件处理程序。这对我最近非常有效。
这是一个已在 Cordova 此处记录的已知问题:https ://issues.apache.org/jira/browse/CB-5115 。我也想要一个解决方法,因为它并不理想。
这是那里解释的解决方法,
window.document.body.ontouchstart = (e) => {
if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') {
e.preventDefault();
e.target.focus();
}
};
我在 Ionic V1 / Angular 1.5 项目中遇到了这个问题。这个修复对我有用:
window.addEventListener('native.keyboardshow', function () {
if ( document.activeElement != document.getElementById('my-input') && document.activeElement.nodeName != 'INPUT' ){
document.getElementById('my-input').focus()
}
});
当我们点击输入时,键盘就会出现。然后我们可以检查我们的输入元素是否真正聚焦。如果没有,我们手动聚焦它。如果它是另一个输入,我们不会关注它。
我在组件的$onInit函数中调用了它 - 确保在使用$onDestroy销毁组件时删除事件侦听器。这也假设您正在使用该ionic-plugin-keyboard
插件。
这适用于一个输入,但如果您在同一页面上有多个输入,您可能需要额外的逻辑来防止您的应用程序在键盘打开时专注于错误的输入。
我遇到了这个问题,发现我已经在另一个 Phonegap 项目中使用它修复了它。它与@mld 的答案基本相同,但使用的是 html。使用 * 不适用于我在 iOS 上的应用程序。
html {
-webkit-user-select: none; /* prevent text selection */
}
input[type="text"] {
-webkit-user-select: text;
}