2016-07-02 6 views
6

Ich habe eine einfache WKWebView in iOS implementiert.Pull zum Aktualisieren funktioniert nicht in iOS WebView

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

Dies ist in viewDidLoad()

und die entsprechenden refreshWebView Funktion. Aber wenn ich es auf dem Handy oder Simulator starte, egal wie viel ich ziehe, gibt es keinen Pull zum Auffrischen. Nichts wird ausgelöst, und es fühlt sich fast so an, als ob ich an den oberen Grenzen des Bildschirms festhalte. Wo kann es schief gehen?

+0

freundlich geführte Ansicht wird in WebView erscheinen (ich meine der Block, der die Ansicht lädt). Tun Sie dies in Ihrer ** refreshWebView() ** Methode – JAck

+0

refreshWebView wird nie aufgerufen. – RandomGuy

+0

Irgendeine Lösung dafür? –

Antwort

9

versuchen, Ihren Code so zu ändern, wenn Sie zu refresh ziehen wollen, dass die webView Sie müssen addSubViewUIRefreshControl Objekt im ScrollView von webView wie diese

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

func hinzufügen ähnlichen

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

Hoffe das wird dir helfen.

+0

Ich habe das getan. Und immer noch keine Veränderung. – RandomGuy

+0

Haben Sie Funktion hinzugefügt, habe ich die Antwort bearbeitet und welche schnelle Sie verwenden, swift 2, swift 2.2 oder höher? –

+0

Sorry, versuchte das, und immer noch nichts. Die "Aktualisierung" wird einfach nie gedruckt. Und irgendwie fühlt es sich an, als würde es einfach nicht ausgelöst. – RandomGuy

0

Versuchen Sie, dies wie folgt zu erklären.

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

Hoffnung das funktioniert ..

2

Sie haben für die Scroll der Webansicht ermöglichen Prellen:

webView.scrollView.bounces = true 

So können Sie die Webansicht nach unten ziehen, die Ihr UIRefreshControl auslösen.

2

nur sagen Blick auf diese in Swift 3 und die Antwort von Jack hat mir geholfen, dieses Problem zu lösen:

in Loadview()/viewDidLoad()

webView.scrollView.bounces = true 
let refreshControl = UIRefreshControl() 
refreshControl.addTarget(self, action: #selector(ViewController.refreshWebView), for: UIControlEvents.valueChanged) 
webView.scrollView.addSubview(refreshControl) 

und dann eine eigene Funktion

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

Und ich sehe jetzt die Aktualisierung gedruckt werden.

0

Der folgende Code wird das Refresh-Steuerelement in scrollview von webview.Initially wird zunächst google.com geladen. Um Pull zu sehen, um klar zu aktualisieren, habe ich weiße Farbe auf den Hintergrund der Bildlaufansicht eingestellt, so dass es deutlich sichtbar ist und auf Pull zum Aktualisieren von Webview öffnet Facebook-Seite.

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)) 
} 
Verwandte Themen