iOS прокручивается вверх, когда контент добавляется в div, неудержимо - PullRequest
0 голосов
/ 03 декабря 2018

Итак, я создаю приложение Cordova для iOS / Android с системой чата.

Сохранение позиции прокрутки при добавлении дополнительного содержимого в верхнюю часть div работает правильно для браузеров и Android, но в iOS оно автоматически прокручивается в верхнюю часть всякий раз, когда что-либо добавляется.Я могу обойти это, установив всего лишь тонну таймаутов и установив scrollTop снова и снова и снова, но невозможно определить, какой из них работает правильно (и, очевидно, между ними есть скачок за доли секунды).

Я использую React, и попытался установить scrollTop в render(), componentDidUpdate() и requestAnimationFrame.Ничто не работает надежно.

В настоящее время у меня есть это в componentDidUpdate, но, похоже, это ужасное решение:

        let newScrollTop = this.el.scrollTop
        let newHeight = this.el.scrollHeight
        let oldHeight = this.lastCalculatedScrollHeight

        const heightDelta = newHeight - oldHeight
        const heightToScrollTo = newScrollTop + heightDelta

        this.el.scrollTop = heightToScrollTo

        setTimeout(_ => {
            this.el.scrollTop = heightToScrollTo
        })

        setTimeout(_ => {
            this.el.scrollTop = heightToScrollTo
        },50)

        setTimeout(_ => {
            this.el.scrollTop = heightToScrollTo
        },100)

        setTimeout(_ => {
            this.el.scrollTop = heightToScrollTo
        },150)

        setTimeout(_ => {
            this.el.scrollTop = heightToScrollTo
        },200)

Кто-нибудь сталкивался с этим раньше?Это сводит меня с ума.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...