ios - 当我下拉刷新我的 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()
}
解决方案
不要将目标添加到刷新控件。只需将它添加到滚动视图。在 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()”。
推荐阅读
- python - 是否可以在不依赖其他值的情况下从预测集中恢复 Dif()?
- sharepoint - 如果 Document-CT 在常规 SharePoint 文档库中具有自定义表单,则无法更改 Office 文档的内容类型
- c# - Open XML SDK:如何更新 Excel 单元格?
- sql - 使用 FOR JSON PATH,WITHOUT_ARRAY_WRAPPER 时 SQL 查询不返回值
- javascript - 当单击按钮进入带有角度和 Fullcalendar 的工具提示时,请继续关注 Tippy.js
- html - 无法达到最大输入类型范围
- c++ - C++ Primer 第 5 版:指向成员函数的指针
- flutter - 在 dart 中如何使用路径提供程序将数据保存到文件中
- reactjs - 如何为 Material-UI 导入别名?
- java - 如何正确地将ejb注入接口?