2016-03-28 5 views
1

Я очень новичок в разработке. Я создаю WebView, и я хочу, чтобы у него были возможности для обновления. Как мне это сделать быстро?Как добавить Pull to Refresh в WebView?

Мой код в View Controller является

@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

Ваш код ошибки вы добавили два просмотра веб-делегата в стороне в ViewDidLoad метод, который должен быть следующий и проверить следующий viewDidLoad код для добавления Pull to Refresh В веб-представлении:

@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

Следующий код поставит элемент управления обновлением в scrollview webvie w.Initially он загрузит google.com. Чтобы увидеть, как рисовать, я установил белый цвет на фоне прокрутки, чтобы он был четко виден, и по нажатию для обновления веб-просмотр открывает страницу 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. Спасибо! Единственное, что я должен был изменить в моем проекте (по какой-то причине, я не уверен, потому что я новичок в Swift): '@objc функ refreshControlClicked() { печать («Refresh срабатывает») refreshControl.endRefreshing() } ' –