【问题标题】:When I pull down to refresh on my UIScrollView it requires me to pull down to the middle of the screen当我下拉刷新我的 UIScrollView 时,它需要我下拉到屏幕中间
【发布时间】:2019-09-27 17:04:39
【问题描述】:

我有一个函数: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()  


 }

【问题讨论】:

    标签: ios swift xcode uiscrollview refresh


    【解决方案1】:

    不要将目标添加到刷新控件。只需将它添加到滚动视图。在 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()”。

    【讨论】:

    • 有没有办法做到这一点,但在加载时延迟弹跳?
    • 喜欢这个? :: DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { // 在此处编写代码。 }
    • 你能编辑上面的代码来显示它的去向吗?
    猜你喜欢
    • 1970-01-01
    • 2019-01-07
    • 2019-04-04
    • 1970-01-01
    • 2011-11-07
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多