我在iOS中实现了直接WKWebView
。
var refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: Selector("refreshWebView"), forControlEvents: UIControlEvents.ValueChanged)
这是viewDidLoad()
以及相应的refreshWebView
功能。但是当我在移动设备或模拟器上运行它时,无论我拖动多少,都没有拉动刷新动作。什么都没有被触发,几乎感觉我被困在屏幕的上限。哪里可能出错?
答案 0 :(得分:11)
尝试更改此类代码,如果您想要refresh
webView
addSubView
UIRefreshControl
ScrollView
webView
喜欢这个
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(self.refreshWebView(_:)), forControlEvents: UIControlEvents.ValueChanged)
webView.scrollView.addSubview(refreshControl)
像这样添加func
func refreshWebView(sender: UIRefreshControl) {
print("refersh")
webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://google.com")!))
sender.endRefreshing()
}
希望这会对你有所帮助。
答案 1 :(得分:5)
SWIFT 4解决方案(基于 Nirav D 答案)
您可以在website
中简单地调用此设置方法:
viewDidLoad
答案 2 :(得分:3)
只是说在Swift 3中看到这个并且JAck的答案帮助我解决了这个问题:
在loadView()/ viewDidLoad()
中webView.scrollView.bounces = true
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(ViewController.refreshWebView), for: UIControlEvents.valueChanged)
webView.scrollView.addSubview(refreshControl)
然后是一个单独的函数
func refreshWebView(sender: UIRefreshControl) {
print("refersh")
//
sender.endRefreshing()
}
我现在看到正在打印刷新。
答案 3 :(得分:2)
您必须为webview的滚动视图启用弹跳:
webView.scrollView.bounces = true
这样可以将webview向下拖动,这将触发你的UIRefreshControl。
答案 4 :(得分:1)
以下代码会将刷新控件放在webview的scrollview中。最初它会加载google.com。为了看清楚刷新,我已经将白色设置为滚动视图的背景,因此它清晰可见,并且在拉动以刷新webview打开Facebook页面。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.refreshControl = UIRefreshControl.init()
refreshControl!.addTarget(self, action:#selector(refreshControlClicked), for: UIControlEvents.valueChanged)
self.webView.scrollView.addSubview(self.refreshControl!)
self.webView.scrollView.backgroundColor = UIColor.white
self.webView.delegate = self
let url:URL = URL.init(string:"https://www.google.com")!
self.loadRequestWithUrl(URLRequest.init(url: url))
}
func webViewDidStartLoad(_ webView: UIWebView) {
NSLog("website loaded")
}
func loadRequestWithUrl(_ urlRequest : URLRequest?){
if(urlRequest != nil){
self.webView.loadRequest(urlRequest!)
}
}
func refreshControlClicked(){
let url:URL = URL.init(string:"https://www.facebook.com")!
self.loadRequestWithUrl(URLRequest.init(url: url))
}
答案 5 :(得分:0)
尝试声明如下。
refreshControl.addTarget(self, action: #selector(yourViewController.refreshWebView), forControlEvents: UIControlEvents.ValueChanged)
希望这有效..