Ich arbeite an einer App, die kleine HTML-Teile in mehrere Webviews lädt. Ich möchte, dass dieser HTML-Code vom Benutzer ausgewählt werden kann, damit er Teile davon kopieren und einfügen kann. Das funktioniert ganz gut, aber nur , wenn der Inhalt größer als 100px
tall ist. Aus irgendeinem Grund, wenn es kürzer ist, kann der Inhalt nicht vom Benutzer ausgewählt werden.
Schritte zum Reproduzieren:
loadHTMLString: "W " * 64, baseURL: nil
in der Webansicht auf. (auf meinem Bildschirm sind das 4 komplette Reihen von "W" s) loadHTMLString: "W " * 65, baseURL: nil
in der Webansicht auf. (auf meinem Bildschirm ist das letzte "W" in der 5. Reihe) Ich habe einiges versucht, um zu verstehen, was hier passiert. Ich folge den gleichen Schritten, starte aber mit einer Höhe von 101 statt 100, es funktioniert einwandfrei mit nur 4 Zeilen.
Ich denke, das könnte ein Fehler in iOS sein? Vielleicht?
Ich führe iOS 9.2
mit Xcode 7.2.1
Weiß jemand hier, warum dies passieren könnte, oder wenn es irgendeine Art von Arbeit gibt, mit der ich das beheben kann?
Ich habe ein paar Workarounds versucht, ohne Erfolg.
Die einzige Problemumgehung, die ich gefunden habe: Verwenden Sie WKWebView
- dieses Problem tritt nicht auf.
Derzeit können Sie ab iOS 9 WKWebView
nicht über den Schnittstellen-Generator hinzufügen. Dies liegt daran, dass es nicht unterstützt wird. Sie können es nicht in IB einfügen, solange WKWebView
header es als NS_UNAVAILABLE
deklariert:
Stattdessen können Sie es als Eigenschaft deklarieren und in Ihrer viewDidLoad
-Implementierung instanziieren, etwa so:
Das Festlegen von scalesPageToFit
auf True für die Webansicht scheint das Problem zu lösen, aber nur, wenn die Höhe 100 ist. Wenn das Problem mit 99 oder weniger gleich bleibt, bleibt das Problem bestehen. Aber es ist seltsam, die Beziehung zwischen scalesPageToFit
und diesem Feature und für eine Höhe von 100 zu sehen. Wenn man die Höhen von 101.100,99 betrachtet, scheint es, als würde hier eine Art von Gleitkommaberechnung stattfinden. Definitiv ein Fehler.
Bei weiteren Untersuchungen habe ich festgestellt, dass der Inhalt wählbar ist, wenn Sie die Höhe auf 100,5 einstellen. Scheint wie eine Art Rundungs-Problem in der Web-View-Implementierung.
Als ich die contentSize der Inhaltsansicht der Webansicht betrachtete, scheint es so, als würde die Auswahl der scrollview contentSize über 100 hinausgehen. Also, wenn Sie mit webviewDidFinishLoad
umgehen und dort prüfen, ob die contentSize & lt; 100 können Sie die Zeichenfolge erneut laden, indem Sie <br>
anhängen. Solange es unter 100 ist, lädst du weiter und fügst jedes Mal einen <br>
zu der geladenen Zeichenkette hinzu. Dies sollte für Sie arbeiten.