如何使用Coregraphics在UIwebview中突出显示和保存所选文本

时间:2012-02-28 11:21:15

标签: ipad uiwebview core-graphics highlighting epub

如何在UIWebView上创建持久性突出显示(包含epub内容),以便他可以在访问该页面时查看它。我得出的结论是,我成功获取了所选文本的索引,我可以将其保存在数据库中。

我需要使用从开始到结束索引的图形来创建透明矩形。但是如何知道文本的坐标,以便我可以在上面绘制矩形。

2 个答案:

答案 0 :(得分:0)

function stylizeHighlightedString() 
{
     var range               = window.getSelection().getRangeAt(0);
     var selectionContents   = range.extractContents();
     var span                = document.createElement("span");

     span.appendChild(selectionContents);
     span.setAttribute("class","uiWebviewHighlight");

     span.style.backgroundColor  = "red";
     span.style.color            = "white";

     range.insertNode(span);
}

答案 1 :(得分:0)

为了在epub中进行永久性突出显示,请在要突出显示的字符串中添加一个范围,然后重写该HTML。突出显示将永远保留

    NSString *uuid = [[NSUUID UUID] UUIDString];

    NSString *insertSpan = [NSString stringWithFormat:@"var range = window.getSelection().getRangeAt(0);var selectionContents   = range.extractContents();alert(selectionContents); var span                = document.createElement(\"span\");span.appendChild(selectionContents);span.setAttribute(\"class\",\"uiWebviewHighlight\");span.style.backgroundColor  = \"#99FF00\";span.setAttribute(\"id\", \"%@\");range.insertNode(span);",uuid];
   [webView stringByEvaluatingJavaScriptFromString:insertSpan];

    NSString *document = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"];

    NSData *data = [document dataUsingEncoding:NSUTF8StringEncoding];

   [data writeToFile:currentChapter.spinePath atomically:YES];