Swift 触摸拖动完成后如何刷新?
How do I refresh when touch drag is finished on Swift?
我对 refresh
部分有疑问。目前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()
}
目前,即使此时用户还没有完成触摸,当屏幕下降到一定高度时,也会对屏幕进行刷新。
但我想运行在用户完成触摸屏幕时刷新。
你可以使用 crrefresh 库来做这件事
您必须在 UIScrollViewDelegate
的 scrollViewDidEndDecelerating
委托方法中调用刷新方法。所以在你的 ViewController
赞中导入 UIScrollViewDelegate
,
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()
}
}
我对 refresh
部分有疑问。目前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()
}
目前,即使此时用户还没有完成触摸,当屏幕下降到一定高度时,也会对屏幕进行刷新。
但我想运行在用户完成触摸屏幕时刷新。
你可以使用 crrefresh 库来做这件事
您必须在 UIScrollViewDelegate
的 scrollViewDidEndDecelerating
委托方法中调用刷新方法。所以在你的 ViewController
赞中导入 UIScrollViewDelegate
,
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()
}
}