首页 > 解决方案 > 调用 beginUpdates 后 UITableView setContentOffset 不起作用

问题描述

每当键盘显示时,我都有这个功能可以向上移动表格视图:

@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工作。beginUpdates()不调用时正常工作。如果 tableView 通过拖动滚动,它也可以再次工作。

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

这本质上是相同的问题tableView.setContentOffset(_, animated:) 在 beginUpdates() 之后不起作用。但是我正在使用DispatchQueue.main.async它仍然无法正常工作。

有什么建议么?

标签: iosswiftuitableviewcontentoffset

解决方案


推荐阅读