Wie ändert man die Textauswahlfarbe in WKWebView?

9

Ich versuche, die Textauswahlfarbe in WKWebView zu ändern. Ich habe so ziemlich alle vorgeschlagenen Lösungen für UIWebView / WKWebView ausprobiert, die ich finden konnte.

Das Ändern der Tönungsfarbe funktioniert nicht. Die Anwendung von CSS für ::selection , -webkit-tap-highlight-color Tags funktioniert auch nicht.

Es ist immer blau. Ist es möglich, es zu ändern?

    
RaffAl 01.08.2017, 11:58
quelle

2 Antworten

1

Hier ist der Beispielcode dafür.

%Vor%

rufen Sie diese Methode mit dem Objective-C-Code

auf %Vor%     
Kirti Parghi 11.10.2017 01:11
quelle
0

Hier ist meine Aufnahme auf private WebKit API hacky swizzling offensichtlich nicht geeignet für eine AppStore App. Apple bietet dafür eine Menge Open-Source-Code: Ссылка Ссылка

Die eigentliche Auswahlhighlight für HTML-Inhalt passiert also in 2 Phasen. Bis der Tipp auf dem Touchscreen gehalten wird, wird private Klasse UIWKSelectionView angezeigt. Das Highlight ist die Eigenschaft tintView . Jeder% code_de% Getter-Aufruf generiert eine neue tintView -Instanz mit der Markierungsfarbe als Hintergrund. Daher muss die Überschreibung nach jedem Zugriff erfolgen.

In der zweiten Phase (nachdem der Benutzer den Tap freigibt) wird der ausgewählte Bereich durch private class UIView dargestellt. Die vertikalen Textmarkierungen mit Punkten sind UIWebTextRangeView . Die Hervorhebung erfolgt in der Methode UIWebDragDotView , die vor dem Überschreiben der Farbe aufgerufen werden muss.

Die endgültige Lösung ist validiert für iOS 8 - 11 . Sobald die Farbe überschrieben wird, wirkt sich dies auf alle Instanzen von updateRectViews aus. Die ursprüngliche Highlight-Farbe ist in WKWebView & amp; UIWKSelectionView und abgerufen über die private Methode UIKit UIWebTextRangeView , die +[UIColor selectionHighlightColor] ergibt.

Der eigentliche Code (Ich wählte RGBA 0 0.33 0.65 0.2 für den Swizzling-Komfort, aber dies könnte auch in obj-c geschehen):

%Vor%     
Kamil.S 22.03.2018 20:15
quelle