当内容无法控制地添加到div时,iOS滚动到顶部

时间:2018-12-03 08:53:32

标签: ios reactjs cordova

因此,我正在构建一个带有聊天系统的iOS / Android Cordova应用。

在div的顶部添加更多内容时,保持滚动位置对于浏览器和Android是正确的,但是在iOS中,只要添加任何内容,它就会自动滚动到顶部。我可以通过设置大量的超时并一次又一次地设置scrollTop来解决它,但是不可能知道哪个在正确地工作(显然它们之间有瞬间的跳跃)。 / p>

我正在使用React,并尝试在render()componentDidUpdate()requestAnimationFrame中设置scrollTop。没有任何东西可靠地工作。

目前,我已经在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)

以前有人遇到过吗?真让我发疯。

0 个答案:

没有答案