[UIScrollView触摸在自动滚动时不起作用

问题描述 投票:0回答:1

我有一个UIScrollView,里面有几个项目。如果有人按下按钮,则我的应用程序中就会有一个功能,滚动视图会以一定速度自动开始滚动。但这会导致所有触摸停止在滚动视图中工作。我的目标是,每当用户开始手动滚动时,我都希望自动滚动自动停止。但是,在运行自动滚动时,手动滚动将停止工作。

这是我的自动滚动代码

self.scrollTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)

var yOffset: CGFloat = 0
    var offsetIncrementer: CGFloat = 5

    @objc func timerAction() {
        yOffset += offsetIncrementer
        if quranContainer.frame.height <= yOffset + self.view.frame.height {
            yOffset = 0
        }

        DispatchQueue.main.async {
            UIView.animate(withDuration: 1.0) {
                self.scrollView.contentOffset.y = self.yOffset
            }
        }
    }

我的输出https://youtu.be/QrYovPMvoBo

ios swift uiscrollview uiscrollviewdelegate
1个回答
0
投票

因为滚动禁用了计时器的更新。

默认情况下您的计时器不在RunLoop.Mode.tracking之下


将计时器添加到RunLoop的普通模式,然后确定

RunLoop.current.add(timer, forMode: RunLoop.Mode.common)

© www.soinside.com 2019 - 2024. All rights reserved.