首页 > 解决方案 > 当我下拉刷新我的 UIScrollView 时,它需要我下拉到屏幕中间

问题描述

我有一个功能:didPullToRefresh(). 为了启动这个功能,我必须把我UIScrollView的一直拉到屏幕中间。有没有一种方法可以通过将屏幕向下拉 50 像素来刷新我想要刷新的数据?谢谢?

这是我当前正在运行的代码:

var refreshControl: UIRefreshControl!
override func viewDidLoad()  {
   super.viewDidLoad()

   scrollView.alwaysBounceVertical = true
   scrollView.bounces  = true
   refreshControl = UIRefreshControl()
   refreshControl.addTarget(self, action: #selector(didPullToRefresh), for: .valueChanged)
   self.scrollView.addSubview(refreshControl)
 }

@objc func didPullToRefresh() {

 print("Refersh")

 // For End refrshing
refreshControl?.endRefreshing()  


 }

标签: iosswiftxcodeuiscrollviewrefresh

解决方案


不要将目标添加到刷新控件。只需将它添加到滚动视图。在 viewDidLoad 中:

scrollView.alwaysBounceVertical = true
scrollView.bounces  = true
scrollView.delegate = self

refreshControl = UIRefreshControl()
self.scrollView.addSubview(refreshControl)

将滚动视图委托设置为自我。并实现以下滚动视图委托方法:

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    if scrollView.contentOffset.y <= -50 {
        refreshControl.beginRefreshing()
        print("Start Refresh Service")
    }
}

在刷新服务完成时写入“refreshControl?.endRefreshing()”。


推荐阅读