簡體   English   中英

在 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()
}

目前,即使此時用戶還沒有完成觸摸,當屏幕下降到一定高度時,屏幕也會進行刷新。

但是我想在用戶完成觸摸屏幕時運行刷新。

您必須在UIScrollViewDelegate scrollViewDidEndDecelerating委托方法中調用 refresh 方法。 所以在你的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()
        }
    }

你可以使用 crrefresh 庫來做這件事

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM