在 iOS8之前的所有版本中,当键盘按以下方法出现时,我能够阻止iPhone键盘向上推(并销毁)我的html / css / js视图:
$('input, select').focus(function(event) {
$(window).scrollTop(0);
// or via the scrollTo function
});
自iOS8以来,这已不再适用。一种解决方法是将此代码放在setTimeOut
中setTimeout(function() { $(window).scrollTop(0); }, 0);
但它只会使视图执行不稳定的动作,因为视图最初被iOS推高,然后被我的js代码拖回。 preventDefault和stopPropagation也无济于事。
我已尝试过在网络上提供的所有内容,包括我自己在此处发布的解决方案:How to prevent keyboard push up webview at iOS app using phonegap但到目前为止,iOS8无效。关于如何阻止iOS8中的键盘推送/移动视图的任何聪明的想法?
答案 0 :(得分:0)
在position:fixed
上尝试body
,和/或将内容包装在div
和position:fixed
上。
答案 1 :(得分:0)
有一些选择:
在你的ios代码上设置监听器,将屏幕与键盘高度一起向上移动,这样一切都随键盘一起向上移动,然后设计保存。
让您的css设计更具响应性。那么更改高度没问题,它可以在你的webview中滚动。
答案 2 :(得分:0)
当键盘在iOS中推送视图时,会触发滚动事件($(window).scrollTop()
已更改)。您可以将$(window).scrollTop(0)
放在scroll事件处理程序中。要防止抖动,请在滚动期间将不透明度设置为0。相关代码可能如下所示:
function forceScrollTop() {
var scrollTop = $(window).scrollTop();
if (scrollTop != 0) {
$(window).scrollTop(0);
$(selector).css('opacity', 1);
$(window).off('scroll', forceScrollTop);
}
}
// when an input is focused ...
$(selector).css('opacity', 0);
$(window).on('scroll', forceScrollTop);