2009-12-28 8 views
8

Salutations,iPhone développement: sélectionné L'ACCAPAREMENT/texte en surbrillance sur UIWebView

S'il vous plaît de bien vouloir des conseils sur la façon dont peut-être que je peux obtenir le texte sélectionné sur UIWebView.

Je suis allé à la recherche sur la façon de traiter avec certains/texte mis en évidence et constaté ce qui suit:

Selection and Menu Management

Pour copier ou couper quelque chose en vue, qui doit « quelque chose » être choisi. Il peut être une plage de texte, une image, une URL , une couleur ou toute autre représentation de données , y compris objets personnalisés. Pour appliquer le comportement copier-coller dans votre vue personnalisée , vous devez gérer la sélection des objets dans cette vue. Si l'utilisateur sélectionne un objet dans la vue en faisant un certain geste tactile (pour exemple, un double-clic), vous devez gérer cet événement, en interne enregistrer la sélection (et désélectionner précédente sélection), et peut-être visuellement indiquent la nouvelle sélection dans la vue . S'il est possible pour les utilisateurs de sélectionner plusieurs objets dans votre vue pour les opérations copier-couper-coller, vous devez appliquer ce comportement de sélection multiple .

Et c'est là que je me suis perdu. "... enregistrer la sélection" - Je ne suis même pas sûr de savoir comment représenter une sélection et encore moins l'enregistrer.

Toute aide est très appréciée. ^^ Salut!

Meilleures salutations, oonoo

+0

Ce paragraphe semble concerner les développeurs de vues personnalisées. Vous n'avez pas écrit UIWebView, vous n'avez donc pas besoin de vous soucier de l'apprendre à sélectionner du texte. –

+0

Salut NSD merci pour la réponse. Vous avez raison je ne suis pas concerné par la façon dont le texte est mis en surbrillance/sélectionné parce qu'il est déjà pris en charge, mais je me demandais comment, quand un utilisateur met en évidence un texte, je peux récupérer ce texte particulier. – oonoo

+0

@ salut, l'avez-vous acchive? Je travaille aussi pour le même .... – Warrior

Répondre

17

Vous pouvez utiliser stringByEvaulatingJavaScriptFromString pour obtenir le texte sélectionné dans un 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

Je ne suis pas capable d'implémenter ce code, quand et comment appeler cette méthode. pouvez-vous fournir n'importe quel code d'échantillon s'il vous plaît? – Warrior

+0

NSString * selection = [self.webView chaîneByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; Code parfait. Merci pour cela. – Muzammil

+0

@Kris Markel Je montre le PDF sur UIWebView et sélectionne le test mais sur le menuItem action Je n'obtiens pas le texte sélectionné ici est mon code: ' UIMenuItem * customMenuItem1 = [[UIMenuItem alloc] initWithTitle: @ Action" Personnalisée 1 " : @selector (customAction1 :)]; - (void) customAction1: (id) expéditeur { NSLog (@ "Chaîne sélectionnée:% @", [self SelectedStringGet]); } - (NSString *) SelectedStringGet { NSString * sélection = [auto.WV_Pdf chaîneByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; retour sélection; ' –

2

Jetez un coup d'œil à l'utilisation de window.getSelection() en JavaScript. Il vous permettra d'obtenir la sélection de texte en cours que vous pourrez ensuite stocker dans une variable globale et accéder à cette variable via la méthode stringByEvaluatingJavaScriptFromString sur UIWebView. Malheureusement, je ne connais pas de méthode JavaScript pour identifier quand la sélection de texte a changé, utilisez plutôt un intervalle pour vérifier cela en permanence. J'ai effectivement fait tout cela, donc je sais que ça peut marcher. En termes de stockage des plages de sélection de texte pour une utilisation ultérieure ainsi que l'application de styles je voudrais regarder dans une bibliothèque JavaScript nommée rangy. Je l'ai trouvé très utile pour créer le plugin jQuery en surbrillance (qui fonctionne à la fois sur le bureau et sur iOS - pas pour Android).

+0

c'est exactement ce que je cherchais, merci! – markshiz