iPhone Web App - 防止键盘移动/俯视视图 - iOS8

时间:2014-09-18 14:44:43

标签: javascript jquery css keyboard ios8

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中的键盘推送/移动视图的任何聪明的想法?

3 个答案:

答案 0 :(得分:0)

position:fixed上尝试body,和/或将内容包装在divposition:fixed上。

答案 1 :(得分:0)

有一些选择:

  1. 在你的ios代码上设置监听器,将屏幕与键盘高度一起向上移动,这样一切都随键盘一起向上移动,然后设计保存。

  2. 让您的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);