2016-07-02 22 views
6

Ho implementato un immediato WKWebView in iOS.Tirare per aggiornare non funziona in iOS WebView

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

Ciò è in viewDidLoad()

E la corrispondente funzione refreshWebView. Ma quando lo eseguo su cellulare o simulatore, non importa quanto lo trascino, non c'è attrazione per aggiornare l'azione. Nulla viene attivato e sembra quasi di essere bloccato ai limiti superiori dello schermo. Dove può andare storto?

+0

La vista di esecuzione gentile apparirà in webView (intendo il blocco che sta caricando la vista). Fai questo nel tuo ** refreshWebView() ** metodo – JAck

+0

refreshWebView non viene mai chiamato. – RandomGuy

+0

Qualche soluzione a questo? –

risposta

9

tenta di modificare il codice in questo modo, se si vuole tirare a refresh il webView è necessario addSubViewUIRefreshControl oggetto nel ScrollView di webView come questo

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

Aggiungere func come questo

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

Spero che questo ti possa aiutare.

+0

L'ho fatto. E ancora nessun cambiamento. – RandomGuy

+0

Hai aggiunto la funzione, ho modificato la risposta e quale swift stai usando, swift 2, swift 2.2 o superiore? –

+0

Scusa, ci ho provato, e ancora niente. Il "refresh" non viene mai stampato. E in qualche modo sembra che non sia stato attivato. – RandomGuy

0

Prova a dichiararlo come di seguito.

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

Spero che questo funziona ..

2

è necessario abilitare rimbalzare per la ScrollView del WebView:

webView.scrollView.bounces = true 

Questo vi permetterà di trascinare la WebView verso il basso, che farà scattare il vostro UIRefreshControl.

2

solo dire guardare questo a Swift 3 e la risposta da presa aiutato a risolvere questo problema:

in loadview()/viewDidLoad()

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

e poi una funzione separata

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

E ora sto visualizzando l'aggiornamento in fase di stampa.

0

Il codice seguente inserirà il controllo di aggiornamento in scrollview di webview. Inizialmente caricherà google.com. Per vedere chiaramente il pull da aggiornare, ho impostato il colore bianco sullo sfondo della vista di scorrimento in modo che sia chiaramente visibile e in pull per aggiornare la vista web si apre la pagina di 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)) 
} 
Problemi correlati