在调用beginUpdates之后,UITableView setContentOffset无法正常工作

问题描述

无论键盘何时显示,我都有此功能可将tableview向上移动:

@objc func keyboardWillShow(notification: Notification) {
        dispatchQueue.main.async {
            let screenScaleFactor: CGFloat = 375 / UIScreen.main.bounds.size.height
            self.currentOffset = self.formTableView.contentOffset
            let maxY = self.formTableView.contentOffset.y
            let offset = CGPoint.init(x: 0,y: maxY + 260.0 * screenScaleFactor)
            self.formTableView.setContentOffset(offset,animated: false)
            
        }

    }

didSelectRowAt中选择时,此代码用于扩展单元格:

case eventForm.rsvpLabelCellIndexPath:
    if eventForm.isRSVPPickerShown {
        eventForm.isRSVPPickerShown = false
    } else {
        eventForm.isRSVPPickerShown = true
    }
    tableView.beginUpdates()
    tableView.endUpdates()

但是在调用beginUpdates()endUpdates() setContentOffset之后,{@ 1}停止工作。未调用beginUpdates()时,它可以正常工作。如果通过拖动来滚动tableView,它也将再次起作用。

我试图在调用beginUpdates()之前和之后将contentOffset设置为保存的值。

这基本上是相同的问题tableView.setContentOffset(_,animated:) do not work after beginUpdates()。 但是我正在使用dispatchQueue.main.async,但仍然无法正常工作。

有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)