Deaktivieren der Benutzerauswahl in UIWebView
Habe ich eine app wo ich das laden von Inhalten zu einem UIWebView
und präsentieren diese. Kann ich nicht deaktivieren Benutzer-Interaktion komplett, weil ich will, dass die Benutzer in der Lage sein, um auf links zu klicken. Ich brauche nur zu deaktivieren, Auswahl des Benutzers. Ich fand irgendwo im Internet, die Sie verwenden können:
document.body.style.webkitUserSelect='none';
Versuchte ich das einfügen dieser als
[self.contentView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitUserSelect='none';"];
in webViewDidFinishLoad:
Aber es funktioniert nicht. Ich bin immer noch in der Lage, wählen Sie und kopieren Sie text innerhalb der WebView.
Irgendwelche Ideen, was könnte schief gehen?
Update: Dies scheint nur zu passieren, beginnend mit iOS 4.3
InformationsquelleAutor der Frage Engin Kurutepe | 2011-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind ein paar Möglichkeiten, um zu deaktivieren Auswahl:
Fügen Sie den folgenden, um Ihre mobilen web-Dokumente
Programmgesteuert laden Sie die folgenden Javascript-code:
Deaktivieren Sie die Kopieren /Einfügen Benutzer-Menü:
InformationsquelleAutor der Antwort WrightsCS
Kann ich bestätigen, dass der folgende code funktioniert in iOS 5.0 - 8.0.
Funktioniert auch für iOS 9 und höher. Hier ist das swift-code:
InformationsquelleAutor der Antwort TPoschel
Bin ich mit dieser Technik in eine web-app für Android /iPhone (verpackt mit Trigger.IO) gefunden und wäre es nur die Arbeit mit der Verkettung syntax für die :not() pseudo-Klasse, :
InformationsquelleAutor der Antwort Johno Scott
Ich mag die WrightsCS Lösung, aber ich werde diese, so kann der Benutzer immer noch mit dem kopieren,einfügen und wählen Sie Aktionen auf Eingaben
InformationsquelleAutor der Antwort pablobart
Ich bin nicht sicher, wie das setup fertig ist, aber warum gehst du nicht einfach klar die Montagefläche viewWillDisappear genannt wird. Vielleicht so etwas wie in Ihrem appDelegate.m:
dies wird sicherstellen, dass alle Daten, die der Benutzer möglicherweise kopiert haben, werden Sie nicht in der Lage, fügen Sie es außerhalb der app.
Auch, wie Engin, sagte Sie außer Kraft setzen können, canPerformSelector Methode in der controller-Klasse mit der uiwebview.
InformationsquelleAutor der Antwort Bittu
TPoschel Antwort ist corrent, aber in meinem Fall Reihenfolge war wichtig.
InformationsquelleAutor der Antwort pawelini1
Kann ich bestätigen, dies wird auf jeden Fall für Sie arbeiten.
Wenn Sie möchten, Deaktivieren Sie nur die Schaltfläche Anker-tag verwenden.
InformationsquelleAutor der Antwort Narsingh Tomar
Ergebnis der großartigen Arbeit, die für eine Woche! Alle anderen Antworten sind falsch, wenn Sie speichern möchten, Maus-events und user-input auf vielen Seiten.
1) Swizzle-Methode (von rentzsch/jrswizzle Bibliothek):
NSObject+myCanPerformAction.h:
NSObject+myCanPerformAction.m:
2) Ort UIWebView auf UIView und fügen Sie einen code:
Und diese:
InformationsquelleAutor der Antwort Dmitry
Die erste Lösung funktionierte perfekt für mich...bis ich geladen .pdf-Datei in meine UIWebView.
Laden ein .doc-Datei funktionierte perfekt, sondern laden ein .pdf-führte in den folgenden code-Zeile nicht mehr mit dem gewünschten Effekt und der Kopie/definieren Menü tauchte wieder auf eine lange Berührung durch den Benutzer.
Nach einem weiteren Anfall von an den Haaren ziehen ich fand diese Antwort hier von Johnny Rockex und es funktionierte wie ein Weltmeister. UIWebView ohne Copy/Paste bei der Anzeige von PDF-Dateien
Vielen Dank für diese einfach zu implementieren, geniale Lösung!!
InformationsquelleAutor der Antwort Scooter
Fügen Sie einfach diesen code in Ihre viewDidLoad(). Benutzer können auf den link klicken, kann aber nicht kopieren Sie den Inhalt.
InformationsquelleAutor der Antwort Samrat Pramanik
Für mich, ich soll Holen der Bilder
NSData
ausUIWebView
durchLongPressGesture
.Aber die Lupe und Kopieren/Einfügen/Ausschneiden immer erfolgen, bevor meine func ausführen.
Fand ich das:
Bedeutet es, die die Lupe und Kopieren/Einfügen/Ausschneiden müssen 0,5 s ausgeführt, so dass, wenn Sie Ihre func ausgeführt werden kann 0.49 s, FERTIG !
InformationsquelleAutor der Antwort Kaiyuan Xu
Verwenden Sie die web Ansicht interection Funktion
Es funktioniert für mich
PS: bitte aktivieren Sie die Interaktion zurück, wenn Sie möchten, könnte der Benutzer die Interaktion mit der webview wieder
InformationsquelleAutor der Antwort Srohr