在UIRefresherControl
中使用UITableView
时,当表视图的内容插入为0时,一切正常,当您上拉时刷新开始,滚动视图的内容偏移达到到大约-200。
然而,当我将UITableView
的内容插入设置为-176(我需要这样做)时,当我拉到-376时,刷新仍然没有开始。启用或禁用"调整滚动视图插图"设置没有任何改变。我该怎么办?我是否还应该更改UIRefresherControl
的任何内容插入值?或者,当您更改UITableView
的内容插入时,它是否自动调整?
var refresher:UIRefreshControl!
override func viewDidLoad() {
super.viewDidLoad()
refresher = UIRefreshControl()
refresher.tintColor = UIColor.blackColor()
refresher.addTarget(self, action: "refresh", forControlEvents: UIControlEvents.ValueChanged)
self.resultsTable.addSubview(refresher)
}
func refresh() {
print("refresh table")
refreshTable()
}
答案 0 :(得分:3)
我有类似的问题。更改tableview的内容插入动态混乱刷新控件。
根本原因是刷新控件更改内容偏移量,然后调用scrollViewDidScroll(这是重置内容插入的位置)
解决方案1。 如果您只设置内容插入一次(因此当控制器加载时),请通过故事板进行设置。
解决方案2。 如果需要在滚动视图委托方法期间动态设置内容插入。尝试这样的事情:
func scrollViewDidScroll(scrollView: UIScrollView) {
let offset = scrollView.contentOffset.y
if offset >= -tableViewInsetHeight {
// Change contentInset only if contentoffset is
// greater than the inset
scrollView.contentInset = UIEdgeInsetsMake(-offset, 0, 0, 0)
}
}
答案 1 :(得分:2)
如果在UITableView代理的scrollViewDidEndDragging
方法上触发事件,您可以触发所需的任何偏移量:
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool)
{
if scrollView.contentOffset.y <= -60
{
refresher.sendActionsForControlEvents(UIControlEvents.ValueChanged)
}
}
在这种情况下,我将其设置为触发为60。