2009-12-28 8 views
8

Grüße,iPhone Entwicklung: Ergreifung ausgewählt/markierten Text auf UIWebView

Bitte freundlich Ratschläge, wie man vielleicht kann ich den markierten Text auf UIWebview zu bekommen.

ich ging zu suchen, wie mit ausgewählten/markierten Text beschäftigen und fanden die folgende: sein

Selection and Menu Management

kopieren oder etwas in einer Ansicht geschnitten, , dass „etwas“ müssen ausgewählt. Es kann eine Reihe von Text, ein Bild, eine URL, eine Farbe oder eine andere Darstellung von Daten, einschließlich benutzerdefinierte Objekte sein. Um das Kopieren-und-Einfügen-Verhalten in Ihrer benutzerdefinierten Sicht zu implementieren, müssen Sie die Auswahl der Objekte in dieser Ansicht selbst verwalten. Wenn die Benutzer ein Objekt in der Ansicht auswählt, indem eine bestimmte Berührungsgeste machen (zum beispielsweise ein Doppeltippen) müssen Sie das Ereignis verarbeiten, intern Aufzeichnung der Auswahl (und deaktiviere all vorherige Auswahl), und vielleicht visuell zeigen Sie die neue Auswahl in der Ansicht. Wenn es für Benutzer möglich ist, mehrere Objekte in Ihrer Sicht für Copy-Cut-Paste-Vorgänge auszuwählen, müssen Sie dieses Multiple-Selection-Verhalten implementieren.

Und das ist, wo ich verloren ging. "... notieren Sie die Auswahl" - Ich bin mir nicht einmal sicher, wie man eine Auswahl darstellt, geschweige denn sie aufzeichnet.

Jede Hilfe wird sehr geschätzt. ^^ Prost!

Mit freundlichen Grüßen, oonoo

+0

Dieser Absatz scheint für Entwickler von benutzerdefinierten Ansichten zu gelten. Sie haben UIWebView nicht geschrieben, so dass Sie sich keine Gedanken darüber machen müssen, wie Sie Text auswählen können. –

+0

Hallo NSD danke für die Antwort. Du hast recht Ich mache mir keine Gedanken darüber, wie der Text markiert/ausgewählt wird, weil er bereits unterstützt wird, aber ich frage mich, wie ich, wenn ein Benutzer einen Text hervorhebt, diesen bestimmten Text abrufen kann. – oonoo

+0

@ hi, Hast du es? Ich arbeite auch für das gleiche .... – Warrior

Antwort

17

Sie können stringByEvaulatingJavaScriptFromString verwenden Sie den ausgewählten Text in einem UIWebView zu bekommen.

NSString *selection = [self.webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"]; 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Selected Text" message:selection delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil]; 
[alert show]; 
[alert release], alert = nil; 
+0

Ich kann diesen Code nicht implementieren, wenn und wie diese Methode aufgerufen wird. Können Sie bitte einen beliebigen Beispielcode angeben? – Warrior

+0

NSString * selection = [self.webView stringByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; Perfekter Code. Danke dafür. – Muzammil

+0

@Kris Markel Ich zeige die PDF auf UIWebView und wählen Sie test, aber auf MenüItem Aktion Ich bekomme nicht den ausgewählten Text hier ist mein Code: ' UIMenuItem * customMenuItem1 = [[UIMenuItem alloc] initWithTitle: @" Benutzerdefinierte 1 "Aktion : @selector (customAction1 :)]; - (void) customAction1: (ID) Absender { NSLog (@ "Ausgewählte Zeichenfolge:% @", [self SelectedStringGet]); } - (NSString *) SelectedStringGet { NSString * selection = [self.WV_Pdf stringByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; Auswahl zurückgeben; ' –

2

Werfen Sie einen Blick auf die Verwendung von window.getSelection() in JavaScript. Dadurch können Sie die aktuelle Textauswahl abrufen, die Sie dann in einer globalen Variablen speichern und über die Methode stringByEvaluatingJavaScriptFromString auf UIWebView auf diese Variable zugreifen können. Leider kenne ich in iOS JavaScript keine Möglichkeit zu erkennen, wann sich die Textauswahl geändert hat, stattdessen benutze ein Intervall, um ständig danach zu suchen. Ich habe das alles getan, also weiß ich, dass es funktionieren kann. In Bezug auf die Speicherung der Textauswahlbereiche für die spätere Verwendung sowie das Anwenden von Stilen würde ich in eine JavaScript-Bibliothek mit dem Namen rangy suchen. Ich fand es unglaublich nützlich, um das jQuery-Plugin hervorzuheben (das sowohl auf dem Desktop als auch auf iOS funktioniert - nicht für Android).

+0

das ist genau das, was ich gesucht habe, danke! – markshiz