当页面打开离子时,防止IOS自动对焦第一次输入

时间:2015-06-08 10:00:27

标签: ios cordova keyboard ionic-framework ionic

我们的应用中有一个页面有一个输入字段。当在IOS上进入该状态时,键盘会自动弹出。这不是我们想要的。这不会发生在Android版本上。

我尝试过各种各样的事情,但没有任何事情可以对它进行排序。我的最后一次尝试是在$cordovaKeyboard.close()处理程序中的app.js运行块中调用$stateChangeSuccess。唉,没什么。

任何指针都将非常感谢!

用代码术语来说并不多。违规输入:

<ion-item class="item-input-inset">
  <label class="item-input-wrapper bg-light-grey-30 text-center">
    <input type="text" class="text-center tracker" ng-model="values.exploreSearch" placeholder="Enter city, street, username or keyword"/>
  </label>
</ion-item>

主app.js中$ionicPlatform.ready块中的JS运行块:

$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams, error) {
  if (window.cordova && $cordovaKeyboard.isVisible) {
    $cordovaKeyboard.close();
  }
});

我之前尝试在页面控制器中放置一个看起来像这样的块:

$ionicPlatform.ready(function () {
  if (window.cordova && $cordovaKeyboard.isVisible) {
    $cordovaKeyboard.close();
  }
}]);

根据我的客户(因为我没有要测试的IOS设备),最后一个块在第一次加载页面时工作,但后来没有。如果您离开页面并返回,则会弹出键盘。

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,似乎与iOS浏览器发送点击事件的方式有关(更多信息请点击此处http://blog.ionic.io/hybrid-apps-and-the-curse-of-the-300ms-delay/

我解决这个问题的方法是将我的表单隐藏在$ stateChangeStart上,然后在400ms之后显示表单。一个更好的方法是让一个透明的div覆盖所有东西,在$ ionicView.enter之后隐藏400ms。

rnb.run.analysis