ios - 调用 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
它仍然无法正常工作。
有什么建议么?
解决方案
推荐阅读
- java - 在 web 应用程序中使用 tomcat 6 和从 IIS 8.5 的重定向运行 java 小程序
- php - 如何使用复选框制作帖子类别过滤器?
- websocket - 在实现负载平衡器时将同一房间的请求路由到使用 Web 套接字的同一服务器
- django - How to bind more than one model to a template
- php - How to fix 'The POST method is not supported for this route. Supported methods: GET, HEAD.'?
- jenkins - Jenkins NodeLabelParameter 插件不显示
- laravel - Eloquent query for user's Monday 9am by timezone
- javascript - 如何找到当前元素的下一个元素?
- javascript - Find list of items(fruits) from an array in an array of object and calculate its quantity and push into another array as an object
- react-native - 无法在添加反应原生 admob 时构建应用程序