gpt4 book ai didi

ios - 在 Swift 上完成触摸拖动后如何刷新?

转载 作者:行者123 更新时间:2023-11-28 23:23:48 27 4
gpt4 key购买 nike

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

目前,即使此时用户还没有完成触摸,当屏幕下降到一定高度时,也会对屏幕进行刷新。

但我想在用户完成触摸屏幕时运行刷新。

最佳答案

您必须在 UIScrollViewDelegatescrollViewDidEndDecelerating 委托(delegate)方法中调用刷新方法。所以在你的 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()
}
}

关于ios - 在 Swift 上完成触摸拖动后如何刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59206293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com