Ich habe eine einfache Test-App erstellt, um mein Problem zuverlässig zu reproduzieren und die beweglichen Teile zu minimieren. Es enthält nur einen Navigationscontroller und einen Ansichtscontroller, dem ich ein WKWebView hinzufüge. Ich sage sofort, dass WKWebView zu www.google.ca navigieren soll. Sobald die Seite geladen ist, springt der Inhalt automatisch unter der Kopfleiste nach oben. Dies ist reproduzierbar reproduzierbar auf verschiedenen Simulatoren / Geräten mit iOS 8/9 / 9.1. Unten ist der Code für meinen ViewController:
%Vor%Ich habe gerade etwas Ähnliches erlebt, während ich Folgendes gemacht habe:
Wenn ein Link auf ein vorhandenes WKWebView in webView:decidePolicyForNavigationAction:decisionHandler:
angeklickt wird, initialisiere ich einen neuen View Controller, der ein WKWebView steuert und Inhalte über eine URL-Anfrage von einem lokalen Webserver lädt, der auf dem Telefon läuft / p>
Bei webView:didFinishNavigation:
schiebe ich diesen View-Controller auf einen Navigations-Controller.
Was ich sah: Der Inhalt würde jedes Mal um 1/3 geladen werden.
Dinge, die ich ausprobiert habe, die nicht funktionierten: In der Bildlaufansicht der Webansicht nach oben blättern, die Bildlaufposition über JavaScript einstellen.
Was funktioniert hat: In Schritt 1, oben, nach dem Initialisieren des View-Controllers (der beginnt, die URL-Anfrage in der Web-Ansicht zu laden), füge ich die View-Controller-Ansicht meiner Ansicht hinzu (und sende sie über% co_de an die Rückseite) %, so dass es nicht angezeigt wird - ich habe versucht, sendSubviewToBack:
auf Null zu setzen, und die Dinge haben sich ausgeflippt.)
Das bringt den Trick und der Web-Inhalt lädt an der richtigen Scroll-Position (oben).
Es hört sich so an, als wäre dies das gleiche Problem - also hoffe ich, dass Sie zumindest über einen Workaround nachdenken.