拉到刷新不工作在iOS WebView

我已经在iOS中实现了一个简单的WKWebView

  var refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: Selector("refreshWebView"), forControlEvents: UIControlEvents.ValueChanged) 

这是在viewDidLoad()

和相应的refreshWebView函数。 但是当我在手机或模拟器上运行它,无论我拖动多less,都没有拉动刷新动作。 没有什么是触发的,它几乎感觉就像我卡在屏幕的上限。 哪里可以出错?

尝试像这样改变你的代码,如果你想拉动refresh webView你需要在webViewScrollView中像这样添加addSubView UIRefreshControl对象

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

希望这会帮助你。

你必须启用webview的滚动视图的弹跳:

 webView.scrollView.bounces = true 

这会让你拖动webview,这将触发你的UIRefreshControl。

简单地说,在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) 

然后单独的function

 func refreshWebView(sender: UIRefreshControl) { print("refersh") // sender.endRefreshing() } 

我现在看到正在刷新刷新。

尝试声明如下。

 refreshControl.addTarget(self, action: #selector(yourViewController.refreshWebView), forControlEvents: UIControlEvents.ValueChanged) 

希望这个作品..

下面的代码将刷新控制在webview的scrollview.Initially它将加载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)) }