微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在调用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 举报,一经查实,本站将立刻删除。