Ich lade eine PDF-Datei der Größe> 5MB in meinem UIWebView
. Ich möchte die PDF-Datei nach dem Laden auf ein bestimmtes Level skalieren.webViewDidFinishLoad aufgerufen vor dem Laden der Datei - iOS 8
func webViewDidFinishLoad(webView: UIWebView) {
webView.scrollView.setZoomScale(3.0, animated: false)
webView.scrollView.contentOffset = CGPointMake(0, -(self.webView.scrollView.contentInset.top))
}
Das obige Snippet gibt das erwartete Ergebnis für iOS 9+. Aber auf iOS 8, wenn webViewDidFinishLoad
ausgelöst wird, wird die PDF nicht geladen und es gibt keine Auswirkungen.
Ich habe auch versucht
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
webView.scrollView.setZoomScale(3.0, animated: false)
webView.scrollView.contentOffset = CGPointMake(0, -(self.webView.scrollView.contentInset.top))
}
Es funktioniert gut, aber nicht jedes Mal. Das Erhöhen der Zeit ist keine gute Idee, denn manchmal dauert es webView
mehr als 5 Sekunden, um die Datei zu laden.
Ich habe versucht, viele Lösungen, die ich
UIWebView: when did a page really finish loading?
How to detect when a UIWebView has completely finished loading?
UIWebView - How to identify the "last" webViewDidFinishLoad message?
auf googeln bekam aber nichts mein Problem gelöst.
Der Aktivitätsindikator, den wir im Screenshot sehen, wird nicht von mir hinzugefügt. Die Anzeige verschwindet nach dem vollständigen Laden der PDF-Datei. Jedenfalls, wenn wir das Ereignis identifizieren könnten, wenn der Indikator verschwindet, kann ich die Datei skalieren.
Gibt es eine Möglichkeit, es zu identifizieren? Oder eine andere Möglichkeit, den Abschluss des Ladens von Dateien zu identifizieren?
Das Problem, das ich in dem Hinzufügen Beobachter Gesicht bekommen ist, wenn der Benutzer auch Pinch Zoom Fall ist, wird der Hörer dort genannt, indem sie mit Seite Flimmern zu enden. Gibt es eine Möglichkeit zu erkennen, dass 'contentSize' vom Benutzer in' observeValue() 'verursacht wird? – iOS