2016-03-28 6 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

あなたのコードは、あなたが側で、次のされている必要がありViewDidLoad方法を2つのWebビューのデリゲートを追加バギーで、追加するために、次の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のスクロールビュー最初は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を使用して私のために働いた。ありがとう! 私は私のプロジェクトで変更しなければならなかった唯一の事(私はスウィフトに新たなんだので、何らかの理由で、私はよく分からない): '@objc FUNC refreshControlClicked(){ プリント(「リフレッシュがトリガー」) refreshControl.endRefreshing() } ' –

関連する問題