拉动刷新在iOS WebView中无法正常工作

Ran*_*Guy 7 ios pull-to-refresh swift wkwebview

我已经WKWebView在iOS中直接实现了.

   var refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action: Selector("refreshWebView"), forControlEvents: UIControlEvents.ValueChanged)
Run Code Online (Sandbox Code Playgroud)

这是在 viewDidLoad()

和相应的refreshWebView功能.但是当我在移动设备或模拟器上运行它时,无论我拖动多少,都没有拉动刷新动作.什么都没有被触发,几乎感觉我被困在屏幕的上限.哪里可能出错?

Nir*_*v D 11

尝试改变你这样的代码,如果你想拉来refreshwebView,你需要addSubView UIRefreshControl在对象ScrollViewwebView这样

let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(self.refreshWebView(_:)), forControlEvents: UIControlEvents.ValueChanged)
webView.scrollView.addSubview(refreshControl)
Run Code Online (Sandbox Code Playgroud)

像这样添加func

func refreshWebView(sender: UIRefreshControl) {
    print("refersh")
    webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://google.com")!))
    sender.endRefreshing()
}
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你.


Ale*_*cci 5

SWIFT 4解决方案(基于Nirav D答案)

您可以在以下位置简单地调用此设置方法viewDidLoad:

private func setupRefreshControl() {
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action: #selector(refreshWebView(sender:)), for: UIControlEvents.valueChanged)
    webView.scrollView.addSubview(refreshControl)
}

@objc
private func refreshWebView(sender: UIRefreshControl) {
    print("refreshing...")
    webView.load(URLRequest(url: url))
    sender.endRefreshing()
}
Run Code Online (Sandbox Code Playgroud)