J'ai implémenté un WKWebView
dans iOS.
var refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: Selector("refreshWebView"), forControlEvents: UIControlEvents.ValueChanged)
C'est dans viewDidLoad()
Et la fonction refreshWebView
correspondante. Mais quand je l'exécute sur un mobile ou un simulateur, peu importe combien je traîne, il n'y a pas de pull pour rafraîchir l'action. Rien n'est déclenché, et j'ai presque l'printing d'être coincé dans les limites supérieures de l'écran. Où peut-il aller mal?
Essayez de modifier votre code comme ceci, Si vous voulez tirer pour refresh
le webView
vous devez UIRefreshControl
object addSubView
UIRefreshControl
dans le ScrollView
de webView
comme ceci
let refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: #selector(self.refreshWebView(_:)), forControlEvents: UIControlEvents.ValueChanged) webView.scrollView.addSubview(refreshControl)
Ajoutez func comme ceci
func refreshWebView(sender: UIRefreshControl) { print("refersh") webView.loadRequest(NSURLRequest(URL: NSURL(ssortingng: "https://google.com")!)) sender.endRefreshing() }
J'espère que ceci vous aidera.
Vous devez activer le rebond pour la scrollview du webview:
webView.scrollView.bounces = true
Cela vous permettra de faire glisser le webview vers le bas ce qui triggersra votre UIRefreshControl.
Juste pour dire cela dans Swift 3 et la réponse de JAck m'a aidé à résoudre ce problème:
dans loadView () / viewDidLoad ()
webView.scrollView.bounces = true let refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: #selector(ViewController.refreshWebView), for: UIControlEvents.valueChanged) webView.scrollView.addSubview(refreshControl)
puis une fonction séparée
func refreshWebView(sender: UIRefreshControl) { print("refersh") // sender.endRefreshing() }
Et je vois maintenant le rafraîchissement en cours d'printing.
Essayez de déclarer ceci comme ci-dessous.
refreshControl.addTarget(self, action: #selector(yourViewController.refreshWebView), forControlEvents: UIControlEvents.ValueChanged)
J'espère que cela fonctionne ..
Le code suivant mettra le contrôle de rafraîchissement dans scrollview de webview. Initialement, il va charger google.com. Pour voir tirer pour se rafraîchir clairement, j'ai mis la couleur blanche à l'arrière-plan de la vue de défilement de sorte qu'il est clairement visible et sur tirer pour rafraîchir webview ouvre la page 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(ssortingng:"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(ssortingng:"https://www.facebook.com")! self.loadRequestWithUrl(URLRequest.init(url: url)) }