[英]Learning Swift - inout functions - Why do they modify the global variable values?
[英]Why do not working UIRefreshControl in Swift?
我在WKWebview
使用刷新功能。 執行刷新時該功能正常。 但是當我加載另一個html
文件並返回時,它沒有刷新。
@IBOutlet var myWebView: WKWebView!
var refController:UIRefreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
myWebView.uiDelegate = self
myWebView.navigationDelegate = self
myWebView.scrollView.delegate = self
refController.bounds = CGRect.init(x: 0.0, y: 50.0, width: refController.bounds.size.width, height: refController.bounds.size.height)
refController.addTarget(self, action: #selector(self.webviewRefresh(refresh:)), for: .valueChanged)
myWebView.scrollView.addSubview(refController)
...
}
@objc func webviewRefresh(refresh:UIRefreshControl){
refController.endRefreshing()
myWebView.reload()
}
extension mainWebViewController: UIScrollViewDelegate{
func scrollViewDidScroll(_ scrollView: UIScrollView) {
print("come in ??")
if currentHtmlFileName == "Main.html" {
scrollView.bounces = (scrollView.contentOffset.y <= 0)
} else {
scrollView.bounces = false
}
}
}
從我的代碼中可以看出,我的WKWebview
正在滾動,並且執行了該功能。 但是,當該函數在不同的屏幕上被激活並返回時,該函數不會被調用,刷新也不會起作用。
重現問題的步驟如下:
location.href = "./other.html";
history.back()
在我的情況下,我有一個反彈,但刷新沒有運行,並且沒有調用該函數。
有沒有人解決過和我一樣的問題? 這是bug嗎???
我想了很多關於這個問題。 所以我的結論是history.back()
不會改變bounce
的價值。 因此, bounce
值為false
。
所以我想我應該重新初始化這個值。 所以我在完成頁面導航的部分添加了一個功能。
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
if currentHtmlFileName == "Main.html" {
scrollViewDidScroll(myWebView.scrollView)
}
}
有了這個添加,反彈值被重新初始化,我的刷新工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.