2009-12-28 34 views
8

Saludos,de Desarrollo del iPhone: Asir texto seleccionado/resaltado en UIWebView

por favor amablemente consejos sobre cómo posiblemente puedo obtener el texto seleccionado en UIWebView.

me pasó a buscar en cómo hacer frente a seleccionado/resaltado de texto y encontró lo siguiente:

Selection and Menu Management

copiar o cortar algo en una vista, que “algo” debe haber seleccionado. Es puede ser un rango de texto, una imagen, una URL , un color o cualquier otra representación de datos, incluidos objetos personalizados. Para implementar el comportamiento de copiar y pegar en su vista personalizada , debe administrar la selección de los objetos en esa vista usted mismo. Si el usuario selecciona un objeto en la vista por hacer un cierto movimiento táctil (por ejemplo, un doble toque) debe controlar ese evento, internamente registro de la selección (y anular la selección de cualquier selección anterior ), y quizás visualmente indique la nueva selección en la vista . Si es posible que los usuarios seleccionen varios objetos en su vista para operaciones de copiado-corte-pegado, debe implementar ese comportamiento de selección múltiple .

Y ahí es donde me perdí. "... registre la selección" - Ni siquiera estoy seguro de cómo representar una selección y mucho menos de grabarla.

Cualquier ayuda es muy apreciada. ^^ ¡Salud!

Saludos cordiales, oonoo

+0

Ese párrafo parece pertenecer a los desarrolladores de vistas personalizadas. No escribió UIWebView, por lo que probablemente no tenga que preocuparse por enseñarle cómo seleccionar texto. –

+0

Hola NSD gracias por la respuesta. Tiene razón. No me preocupa cómo se resalta/selecciona el texto porque ya es compatible, pero me preguntaba cómo, cuando un usuario resalta un texto, puedo recuperar ese texto en particular. – oonoo

+0

@ hola, ¿Lo obtuviste? también estoy trabajando para lo mismo ... – Warrior

Respuesta

17

Puede utilizar stringByEvaulatingJavaScriptFromString para obtener el texto seleccionado en ese momento en 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

no puedo implementar este código, cuándo y cómo llamar a este método. ¿Puedes proporcionar cualquier código de muestra por favor? – Warrior

+0

NSString * selection = [self.webView stringByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; Código perfecto. Gracias por esto. – Muzammil

+0

@Kris Markel Estoy mostrando el PDF en UIWebView y selecciono la prueba pero en el menú Acción del elemento No obtengo el texto seleccionado aquí está mi código: ' UIMenuItem * customMenuItem1 = [[UIMenuItem alloc] initWithTitle: @" Custom 1 "action : @selector (customAction1 :)]; - (void) customAction1: (id) remitente { NSLog (@ "Cadena seleccionada:% @", [self SelectedStringGet]); } - (NSString *) SelectedStringGet { NSString * selection = [self.WV_Pdf stringByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; selección de devolución; ' –

2

Eche un vistazo al uso de window.getSelection() en JavaScript. Le permitirá obtener la selección de texto actual que luego podría almacenar en una variable global y acceder a esa variable mediante el método stringByEvaluatingJavaScriptFromString en UIWebView. Desafortunadamente, no conozco una forma en el JavaScript de iOS para identificar cuándo ha cambiado la selección de texto, así que en su lugar use un intervalo para verificar continuamente eso. De hecho, he hecho todo esto, así que sé que puede funcionar. En términos de almacenar los rangos de selección de texto para su uso posterior, así como la aplicación de estilos, buscaría en una biblioteca de JavaScript llamada rangy. Me pareció increíblemente útil para crear el complemento jQuery de resaltado (que funciona tanto en el escritorio como en iOS, aunque no para Android).

+0

esto es exactamente lo que estaba buscando, ¡gracias! – markshiz

Cuestiones relacionadas