При использовании iScroll с входными данными в iOS safari клавиатура перемещает скроллер над видовым экраном и застревает

#javascript #ios #mobile-safari #iscroll

#javascript #iOS #mobile-safari #iscroll

Вопрос:

Кто-нибудь придумал, как это решить? Я поговорил с Маттео из Cubiq, и его решение заключалось в использовании переходов вместо преобразований. Прямо сейчас я, по сути, добавляю отступы к размеру клавиатуры под страницей, когда появляется клавиатура, но у этого есть куча новых проблем, связанных с тем, что курсор перепутан:

 $('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:

Иногда виртуальная клавиатура вызывает изменение физического прокрутки. Чтобы вы могли прокручивать его до верха, когда клавиатура скрывается.

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