ios - 在 Swift 上完成触摸拖动后如何刷新?
问题描述
我的零件有问题refresh
。目前,to的功能refresh
还可以。
但是我想在用户完成触摸 iphone 时刷新。
var refController:UIRefreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
refController.bounds = CGRect.init(x: 0.0, y: 40.0, width: refController.bounds.size.width, height: refController.bounds.size.height)
refController.addTarget(self, action: #selector(self.webviewRefresh(refresh:)), for: .valueChanged)
refController.attributedTitle = NSAttributedString(string: "refreshing")
WKWebView.scrollView.addSubview(refController)
if contentController.userScripts.count > 0 {
contentController.removeAllUserScripts()
}
...
}
@objc func webviewRefresh(refresh:UIRefreshControl){
refController.endRefreshing()
WKWebView.reload()
}
目前,即使此时用户还没有完成触摸,当屏幕下降到一定高度时,也会对屏幕进行一次刷新。
但是我想在用户完成触摸屏幕后运行刷新。
解决方案
scrollViewDidEndDecelerating
您必须在 的委托方法中调用刷新方法UIScrollViewDelegate
。所以导入UIScrollViewDelegate
你的ViewController
喜欢,
extension YourViewController: UIScrollViewDelegate {
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if self.refController.isRefreshing {
self.webviewRefresh()
}
}
}
那么你的webviewRefresh
意愿是,
@objc func webviewRefresh(){
refController.endRefreshing()
WKWebView.reload()
}
而你的viewDidLoad
意志是,
override func viewDidLoad() {
super.viewDidLoad()
refController.bounds = CGRect.init(x: 0.0, y: 40.0, width: refController.bounds.size.width, height: refController.bounds.size.height)
refController.attributedTitle = NSAttributedString(string: "refreshing")
WKWebView.scrollView.addSubview(refController)
WKWebView.scrollView.delegate = self
if contentController.userScripts.count > 0 {
contentController.removeAllUserScripts()
}
}
推荐阅读
- mysql - Mysql 主 - 从
- scala - How to represent contravariant type parameter using bounds
- css - MaterializeCSS 中的选择未填充来自 VUE 的数据
- java - 如何发送函数列表作为参数
- linux - 没有ptp时钟文件
- google-bigquery - Big Query 计划查询保存到以昨天日期命名的单个表中
- payment-gateway - 如何通过网站为 UPI 支付创建深层链接
- javascript - 如何为动态表创建标题
- javascript - 如何实现预览缩略图像vscode实时预览
- excel - 通过 VBA 将制表符分隔的文本文件导入 Excel 时,日期类型数据从“dd/mm”更改为“mm/dd”类型