繁体   English   中英

UIRefreshControl和UiTableview内容插入

[英]UIRefreshControl & UiTableview Content Inset

UITableView使用UIRefresherControl时,当表视图的内容插入为0时,一切正常,并且在上拉时刷新开始,滚动视图的内容偏移达到大约-200。

但是,当我将UITableView的内容插入设置为-176(我需要这样做)时,当我将其拉到-376时,刷新仍然没有开始。 启用或禁用“调整滚动视图插图”设置不会进行任何更改。 我该怎么办,是否还应该以UIRefresherControl更改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()

  }

我有一个类似的问题。 更改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)

    }
}

如果在UITableView的委托的scrollViewDidEndDragging方法上触发事件,则可以在任意偏移量上触发:

func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) 
{
    if scrollView.contentOffset.y <= -60
    {
        refresher.sendActionsForControlEvents(UIControlEvents.ValueChanged)
    }
}

在这种情况下,我将其设置为触发到60。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM