键盘出现时输入文本丢失焦点 - iOS PhoneGap Application

时间:2014-01-30 09:10:14

标签: ios cordova textfield lostfocus

我在使用带有html输入文本的cordova 2.7在iOS 7上开发手机间隙应用程序时遇到了问题。当我选择输入文本时,键盘会弹出。但由于焦点丢失,无法输入任何内容。我必须再次选择输入文字。

任何人都可以帮助我。

5 个答案:

答案 0 :(得分:9)

我遇到了类似的问题,键盘出现了,但文本框中没有显示任何类型。我的是由css引起的 -

* {
  -webkit-user-select: none; /* prevent copy paste */
}

我通过覆盖文本框的样式来解决问题 -

input[type="text"] {
    -webkit-user-select: text;
}

答案 1 :(得分:2)

cordova应用程序中有一个配置文件,config.xml默认情况下,cordova不允许你通过javascript调用来控制焦点,这意味着键盘可以消失"

改变这个:

<preference name="KeyboardDisplayRequiresUserAction" value="true" />

<preference name="KeyboardDisplayRequiresUserAction" value="false" />

然后只需为该字段编写一个事件处理程序,当它在setTimeout中点击时,它会将焦点设置在自身上。这对我来说非常有用。

答案 2 :(得分:0)

这是一个已知问题,已在Cordova中记录:https://issues.apache.org/jira/browse/CB-5115。我还想对此进行解决,因为它并不理想。

答案 3 :(得分:0)

我遇到了这个问题,发现我已经使用它修复了另一个Phonegap项目。它与@mld答案基本相同,但使用的是html。使用*不适用于iOS上的应用。

html {
  -webkit-user-select: none; /* prevent text selection */
}

input[type="text"] {
    -webkit-user-select: text;
}

答案 4 :(得分:0)

我在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插件。

这适用于一个输入,但如果您在同一页面上有多个输入,则可能需要额外的逻辑来防止您的应用在键盘打开时关注错误的输入。