UIWebView mit einer Höhe von weniger als 101px nicht auswählbar?

9

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:

  1. Erstellen Sie ein UIWebView mit einer Breite von 322 und einer Höhe von 100 und fügen Sie es einer Ansicht hinzu
  2. Rufen Sie loadHTMLString: "W " * 64, baseURL: nil in der Webansicht auf. (auf meinem Bildschirm sind das 4 komplette Reihen von "W" s)
  3. Klicken und halten Sie eines der "W" gedrückt, beachten Sie, dass das Kopieren / Einfügen-Menü nicht erscheint
  4. Rufen Sie loadHTMLString: "W " * 65, baseURL: nil in der Webansicht auf. (auf meinem Bildschirm ist das letzte "W" in der 5. Reihe)
  5. Klicken und halten Sie eines der "W" gedrückt, beachten Sie, dass das Kopieren / Einfügen-Menü erscheint

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

aus

Weiß jemand hier, warum dies passieren könnte, oder wenn es irgendeine Art von Arbeit gibt, mit der ich das beheben kann?

    
BananaNeil 09.03.2016, 01:12
quelle

3 Antworten

3

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:

%Vor%

Stattdessen können Sie es als Eigenschaft deklarieren und in Ihrer viewDidLoad -Implementierung instanziieren, etwa so:

%Vor%     
Sheamus 13.03.2016, 22:04
quelle
1

Nun, Webview soll HTML-Code laden, aber keine reine Zeichenkette, die das verwirren könnte. Wenn Sie <!DOCTYPE HTML> vorne hinzufügen, kann es ausgewählt werden, egal wie kurz die Zeichenfolge ist.

    
Terence 16.03.2016 19:39
quelle
0

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.

%Vor%     
Pradeep K 18.03.2016 13:53
quelle

Tags und Links