ionic html5 select/keypad 打开,向上滚动视图和选项卡并在 iOS 上的选项卡后创建空 space
ionic html5 select/keypad open, scroll the view and tab to upward and create empty space after tab on iOS
我将 ionic v1 与 angularJS 一起使用,并且我有 ion 选项卡:
<ion-tabs class="tabs-icon-top tabs-color-active-positive">
<!-- Home Tab -->
<ion-tab icon-off="ion-home" icon-on="ion-home" href="#/tab/home">
<ion-nav-view name="tab-home"></ion-nav-view>
</ion-tab>
<!-- Calendar Tab -->
<ion-tab icon-off="ion-calendar" icon-on="ion-calendar" href="#/tab/calendar">
<ion-nav-view name="tab-calendar"></ion-nav-view>
</ion-tab>
</ion-tabs>
在日历选项卡中,我有如下 html 选项:
<select ng-options="x for x in $ctrl.startTimes"></select>
当 select 菜单打开时,视图向上滚动并在 ion-tabs
下创建空 space。
如何将视图移动到 select 菜单打开前的初始位置?
最后,我找到了一种解决方法,它仍然存在一些小问题。为了解决它,我执行以下操作:
首先:在app.js中我禁用滚动如下:
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.disableScroll(true);
}
其次:注册小键盘隐藏事件,当小键盘或select控件关闭时会触发keyboardHideHandler
:
window.addEventListener('native.keyboardhide', keyboardHideHandler);
第三:实现keyboardHideHandler
如下。实施所有问题后只发生在第一次,所以你必须使用标志 isFirstTimeEdit
:
var isFirstTimeEdit = true;
function keyboardHideHandler(e){
if(isFirstTimeEdit) {
isFirstTimeEdit = false;
if(window.scrollY >= 20) {
document.body.style.marginTop = "20px";
}
}
window.removeEventListener('native.keyboardshow', keyboardShowHandler);
}
我将 ionic v1 与 angularJS 一起使用,并且我有 ion 选项卡:
<ion-tabs class="tabs-icon-top tabs-color-active-positive">
<!-- Home Tab -->
<ion-tab icon-off="ion-home" icon-on="ion-home" href="#/tab/home">
<ion-nav-view name="tab-home"></ion-nav-view>
</ion-tab>
<!-- Calendar Tab -->
<ion-tab icon-off="ion-calendar" icon-on="ion-calendar" href="#/tab/calendar">
<ion-nav-view name="tab-calendar"></ion-nav-view>
</ion-tab>
</ion-tabs>
在日历选项卡中,我有如下 html 选项:
<select ng-options="x for x in $ctrl.startTimes"></select>
当 select 菜单打开时,视图向上滚动并在 ion-tabs
下创建空 space。
如何将视图移动到 select 菜单打开前的初始位置?
最后,我找到了一种解决方法,它仍然存在一些小问题。为了解决它,我执行以下操作:
首先:在app.js中我禁用滚动如下:
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.disableScroll(true);
}
其次:注册小键盘隐藏事件,当小键盘或select控件关闭时会触发keyboardHideHandler
:
window.addEventListener('native.keyboardhide', keyboardHideHandler);
第三:实现keyboardHideHandler
如下。实施所有问题后只发生在第一次,所以你必须使用标志 isFirstTimeEdit
:
var isFirstTimeEdit = true;
function keyboardHideHandler(e){
if(isFirstTimeEdit) {
isFirstTimeEdit = false;
if(window.scrollY >= 20) {
document.body.style.marginTop = "20px";
}
}
window.removeEventListener('native.keyboardshow', keyboardShowHandler);
}