iPhone开发:在UIWebView上抓取选定/突出显示的文本

时间:2009-12-28 10:37:30

标签: iphone uiwebview selection

问候,

请提供关于如何在 UIWebVIew 上获取所选文字的建议。

我继续搜索如何处理选定/突出显示的文本,并找到以下内容:

Selection and Menu Management

  

要在视图中复制或剪切某些内容,   必须选择“某事”。它   可以是一系列文字,一个图像,一个   URL,颜色或任何其他   数据的表示,包括   自定义对象。实施   自定义中的复制和粘贴行为   查看,你必须管理选择   那个视图中的对象你自己。如果   用户在视图中选择一个对象   做出一定的触摸手势(for   例如,双击)你必须处理   该事件,在内部 记录   选择 (并取消选择之前的任何内容   选择),也许在视觉上   表示新的选择   视图。如果用户可以   在视图中选择多个对象   对于复制 - 剪切 - 粘贴操作,您   必须实现多重选择   行为。

这就是我迷路的地方。 “...记录选择” - 我甚至不确定如何表示选择,更不用说录制它了。

非常感谢任何帮助。 ^^干杯!

亲切的问候, oonoo

2 个答案:

答案 0 :(得分:17)

您可以使用stringByEvaulatingJavaScriptFromString在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;

答案 1 :(得分:2)

看看在JavaScript中使用window.getSelection()。它将允许您获取当前文本选择,然后您可以将其存储在全局变量中,并通过UIWebView上的stringByEvaluatingJavaScriptFromString方法访问该变量。不幸的是,我不知道iOS JavaScript中的一种方法可以识别文本选择何时发生变化,因此请使用间隔来连续检查。我实际上完成了所有这些,所以我知道它可以工作。在存储文本选择范围以供以后使用以及应用样式方面,我将查看名为rangy的JavaScript库。我发现它在创建突出显示jQuery插件时非常有用(它适用于桌面和iOS上 - 但不适用于Android)。