ios - 当页面打开 ionic 时防止 IOS 自动对焦第一次输入

标签 ios cordova keyboard ionic-framework

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

我已经尝试了各种各样的事情,但没有任何解决办法。我最后一次尝试是在 $stateChangeSuccess 处理程序内的 app.js 运行 block 中调用 $cordovaKeyboard.close()。唉,没什么。

如有任何指点,我们将不胜感激!

没有太多的代码术语。违规输入:

<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 运行 block 中 $ionicPlatform.ready block 中的 JS:

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

我之前尝试在页面 Controller 中放置一个 block ,如下所示:

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

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

最佳答案

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

我解决这个问题的方法是在 $stateChangeStart 上隐藏我的表单,然后在 400 毫秒后显示该表单。一个稍微好一点的方法是用一个透明的 div 覆盖所有内容,在 $ionicView.enter 之后隐藏 400 毫秒。

<div style="position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px; z-index: 1000;" ng-hide="showFields" class="ng-hide"></div>

关于ios - 当页面打开 ionic 时防止 IOS 自动对焦第一次输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30706214/

相关文章:

ios - 保护 iOS 应用程序包中的登录凭据

iphone - 如何向 addTarget :action:forControlEvents:? 调用的选择器添加更多参数

javascript - 在 Cordova/Phonegap 下运行时,点击 contenteditable div 无法定位光标

ios - 点击自定义键盘按钮时如何播放滴答声

ios - 避免弹出窗口在水平紧凑的环境中适应全屏

ios编辑表格,键盘隐藏字段

android - 更新 SDK 后 Cordova 模拟不在 Genymotion 上运行

ios - Cordova 媒体插件 setVolume() 不工作

android - 如何更改android中的(物理)键盘语言?(除了SHIFT-SPACE)

android - 如何使软键盘候选 View 不阻止应用程序 View ?