【发布时间】:2015-06-08 10:00:26
【问题描述】:
我们的应用中有一个页面,它有一个输入字段。在 IOS 上进入该状态时,键盘会自动弹出。这不是所希望的。这在 Android 版本上不会发生。
我已经尝试了各种各样的东西,但没有任何东西可以对其进行排序。我最后一次尝试是在$stateChangeSuccess 处理程序内的app.js 运行块中调用$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运行块中$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 设备),最后一个块在页面第一次加载时工作,但随后没有工作。如果你离开页面,然后回来,键盘会弹出。
【问题讨论】:
-
你不能在特定页面的控制器中添加
$cordovaKeyboard.close();吗? -
或者使用
ngFocus关闭键盘?见:docs.angularjs.org/api/ng/directive/ngFocus -
@MarkVeenstra 这就是我在最终代码示例块中所做的,只是包装在
$ionicPlatform.ready回调中。也许 ngFocus 的事情可能会起作用.... -
$ionicPlatform.ready不是控制器。可以在加载视图之前触发平台就绪。 -
我有一个发展。事实证明,键盘打开的原因是用户单击以进入状态(键盘弹出的位置)的 ui-sref 链接与新状态下的输入在屏幕上的位置相同。触摸事件似乎被转移到新状态,并再次注册,导致输入获得焦点,从而调出键盘。那么,现在的问题来了,为什么在IOS中跨越状态变化携带的tap事件呢?我可能不得不在新帖子中对此进行说明,因为这与我在原始帖子中的诊断不同。
标签: ios cordova keyboard ionic-framework ionic