Ios 资讯科技及广播局;UiTableview内容插入

Ios 资讯科技及广播局;UiTableview内容插入,ios,swift,refresh,Ios,Swift,Refresh,在UITableView中使用UIRefresherControl时,当表视图的内容插入为0时,一切正常,当您向上拉时刷新开始,滚动视图的内容偏移量达到大约-200 但是,当我将UITableView的内容插入设置为-176(我需要这样做)时,当我拉到-376时,刷新仍然没有开始。启用或禁用“调整滚动视图插入”设置不会进行任何更改。我能做什么,我是否也应该以某种方式更改UIRefresherControl的任何内容插入值?或者,当您更改UITableView的内容插入时,它不是自动调整的吗 va

UITableView
中使用
UIRefresherControl
时,当表视图的内容插入为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()

  }

如果在UITableView的委托的
ScrollViewDiEndDraging
方法上触发事件,则可以触发所需的任何偏移:

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

如果scrollView.contentOffset.y触发UITableView委托的
ScrollViewDiEndDraging
方法上的事件,则可以在任何需要的偏移上触发:

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

如果scrollView.contentOffset.y我也遇到了类似的问题。动态更改tableview的内容插入会干扰刷新控件

根本原因是refresh控件更改了内容偏移量,并依次调用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)

    }
}

我也遇到了类似的问题。动态更改tableview的内容插入会弄乱刷新控件

根本原因是refresh控件更改了内容偏移量,并依次调用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)

    }
}