2009-12-28 15 views
8

Pozdrowienia,iPhone Development: chwytając wybraną/tekst zaznaczony na UIWebView

Uprzejmie proszę o porady, jak ewentualnie można uzyskać zaznaczonego tekstu na UIWebView.

poszedłem na poszukiwanie tego, jak radzić sobie z wybranego/podświetlonego tekstu i stwierdził, co następuje:

Selection and Menu Management

Aby skopiować lub wyciąć coś w widoku, że „coś” musi być wybrany. Może to być zakres tekstu, obrazu, adresu URL, koloru lub dowolnej innej reprezentacji danych, w tym , w tym obiekty niestandardowe. Aby zaimplementować zachowanie kopiowania i wklejania w niestandardowym widoku , musisz samodzielnie zarządzać wyborem obiektów w tym widoku. Jeśli użytkownik wybiera obiekt w widoku przez co pewien gest dotykowy (dla przykład, dotknij dwukrotnie) musi obsługiwać takim przypadku wewnętrznie rekord wybór (i odznacz wszystkie poprzednie wybór) i być może wizualnie wskazują nowy wybór w widoku . Jeśli użytkownicy mogą wybrać wielu obiektów w widoku dla operacji kopiowania-wycinania i wklejania, to użytkownik musi wdrożyć zachowanie wielokrotnego wyboru .

I tu się zgubiłem. "... zapisz wybór" - Nie jestem nawet pewien, jak reprezentować wybór, nie mówiąc już o jego nagrywaniu.

Każda pomoc jest bardzo doceniana.^^ Pozdrawiam!

pozdrowienia rodzaju, oonoo

+0

Ten akapit wydaje się odnosić do twórców niestandardowych widoków. Nie pisałeś UIWebView, więc prawdopodobnie nie musisz się martwić uczeniem go, jak wybierać tekst. –

+0

Cześć NSD dzięki za odpowiedź. Masz rację Nie przejmuję się tym, jak tekst jest zaznaczony/wybrany, ponieważ jest już obsługiwany, ale zastanawiałem się, jak, kiedy użytkownik podświetli tekst, mogę pobrać ten konkretny tekst. – oonoo

+0

@ hi, czy to ujęłeś? Pracuję też dla tego samego .... – Warrior

Odpowiedz

17

Można użyć stringByEvaulatingJavaScriptFromString uzyskać aktualnie zaznaczonego tekstu w UIWebView.

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

Nie jestem w stanie zaimplementować tego kodu, kiedy i jak wywołać tę metodę. czy możesz podać dowolny przykładowy kod? – Warrior

+0

NSString * selection = [self.webView stringByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; Idealny kod. Dzięki za to. – Muzammil

+0

@ Kris Markel Wyświetlam plik PDF na UIWebView i wybieram test, ale w menu Działanie elementu Nie otrzymuję zaznaczonego tekstu tutaj jest mój kod: ' UIMenuItem * customMenuItem1 = [[UIMenuItem alloc] initWithTitle: @" Custom 1 "action : @selector (customAction1 :)]; - (void) customAction1: (identyfikator) nadawca { NSLog (@ "Wybrany ciąg:% @", [self SelectedStringGet]); } - (NSString *) SelectedStringGet { NSString * selection = [self.WV_Pdf stringByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; wybór powrotu; ' –

2

Zobacz, jak używać window.getSelection() w JavaScript. Pozwoli to uzyskać bieżący wybór tekstu, który można następnie zapisać w zmiennej globalnej i uzyskać dostęp do tej zmiennej za pomocą metody stringByEvaluatingJavaScriptFromString w interfejsie UIWebView. Niestety, nie wiem w jaki sposób w JavaScript iOS, aby zidentyfikować, kiedy wybór tekstu się zmienił, zamiast tego użyj interwału, aby ciągle to sprawdzać. Zrobiłem to wszystko, więc wiem, że to może zadziałać. Jeśli chodzi o przechowywanie zakresów wyboru tekstu do późniejszego użycia, a także stosowanie stylów, zajrzałbym do biblioteki JavaScript o nazwie rangy. Okazało się, że jest niesamowicie przydatny w tworzeniu podświetlania wtyczki jQuery (działa zarówno na komputerze, jak i na iOSie - nie na Androidzie).

+0

to jest dokładnie to, czego szukałem, dzięki! – markshiz