在iOS Safari中使用带有输入的iScroll时,键盘会将滚动条推到视口上方并卡住

时间:2014-06-17 16:25:17

标签: javascript ios mobile-safari iscroll

有没有人弄清楚如何解决这个问题?我和Cubiq的Matteo谈过,他的解决方案是使用转换而不是转换。现在,当键盘出现时,我基本上在页面下方添加了键盘大小的填充,但这有一堆新问题围绕着光标搞砸了:

$('body').on('focus', 'input, textarea', function() {
                console.log('SCROLLER INPUT FOCUS');
                if(!self.getCurrentScroller()) return;
                self.getCurrentScroller().css('padding-bottom', 260);
                self.getCurrentIscroll().refresh();
                self.getCurrentIscroll().scrollToElement(this, 0);
            });

            $('body').on('blur', 'input, textarea', function() {
                console.log('SCROLLER INPUT BLUR');
                if(!self.getCurrentScroller()) return;
                self.getCurrentScroller().css('padding-bottom', 0);
                self.getCurrentIscroll().refresh();
                self.getCurrentIscroll().scrollToElement(this, 0);
            });

这个想法是键盘只会导致iScroll卡在视口上方,如果你在iscroll的底部,并且当键盘按下它时没有更多页面可以滚动。

1 个答案:

答案 0 :(得分:0)

有时虚拟键盘会导致物理滚动发生变化。因此,当键盘隐藏时,您可以将其滚动到顶部。

$wrapper.find('input, textarea').on('blur', function (e) {
    $wrapper.scrollTop(0);
});