2016-03-28 56 views
1

我对开发很陌生。我正在构建一个WebView,并希望它能够提升能力。我该如何迅速做到这一点?如何在WebView中添加Pull to Refresh?

我在视图控制器代码

@IBOutlet var webView: UIWebView! 



override func viewDidLoad() { 
    super.viewDidLoad() 


    func webViewDidFinishLoad(webView: UIWebView) { 
     UIApplication.sharedApplication().networkActivityIndicatorVisible = false 
    } 

    func webViewDidStartLoad(webView: UIWebView) { 
     UIApplication.sharedApplication().networkActivityIndicatorVisible = true 
    } 

    let url = NSURL (string: "https://www.foo.com"); 
    let requestObj = NSURLRequest(URL: url!); 
    webView.loadRequest(requestObj); 
    NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/601.5.17 (KHTML, like Gecko) Version/9.1 Safari/601.5.17"]) 


} 


override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

} 

}

回答

2

你的代码是你加入侧两个Web视图代表的ViewDidLoad方法必须跟踪和检查以下viewDidLoad代码添加马车在网络视图中拉到刷新:

@IBOutlet var webView: UIWebView! 

var refController:UIRefreshControl = UIRefreshControl() 

override func viewDidLoad() { 
    super.viewDidLoad() 


    let url = NSURL (string: "https://www.foo.com"); 
    let requestObj = NSURLRequest(URL: url!); 
    webView.loadRequest(requestObj); 
    NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/601.5.17 (KHTML, like Gecko) Version/9.1 Safari/601.5.17"]) 



    refController.bounds = CGRectMake(0, 50, refController.bounds.size.width, refController.bounds.size.height) 
    refController.addTarget(self, action: Selector("mymethodforref:"), forControlEvents: UIControlEvents.ValueChanged) 
    refController.attributedTitle = NSAttributedString(string: "Pull to refresh") 
    webView.scrollView.addSubview(refController) 
    } 



    func mymethodforref(refresh:UIRefreshControl){ 
     webView.reload() 
     refController.endRefreshing() 
    } 
    func webViewDidFinishLoad(webView: UIWebView) { 
     UIApplication.sharedApplication().networkActivityIndicatorVisible = false 
    } 

    func webViewDidStartLoad(webView: UIWebView) { 
     UIApplication.sharedApplication().networkActivityIndicatorVisible = true 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 

    } 

} 
+0

非常感谢。再次,我刚开始学习代码,我在高中时感谢您的时间 –

1

以下代码将刷新控件放在webvie的滚动视图中w.Initially它将加载google.com。要清楚地看到拉刷新我已经设置白色的滚动视图的背景,所以它是清晰可见的拉动刷新webview打开Facebook页面。

class ViewController: UIViewController,UIWebViewDelegate { 

@IBOutlet weak var webView: UIWebView! 

var refreshControl:UIRefreshControl? 

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)) 
} 
} 
+0

此代码为我使用Swift 4.谢谢! 我在我的项目改变的唯一的事(出于某种原因,我不知道,因为我是新来的斯威夫特): '@objc FUNC refreshControlClicked(){ 打印(“刷新触发”) refreshControl.endRefreshing() }' –

相关问题