2012-02-28 60 views
2

如何在UIWebView(包含epub内容)上制作持久性突出显示,以便每当他到达该页面时都可以查看它。我得出的结论是,我成功地获得了可以保存在数据库中的选定文本的索引。如何使用Coregraphics在UIwebview中突出显示并保存选定的文本

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

回答

0

为了在epub中制作永久高亮,请在要突出显示的字符串中添加一个span,然后重写该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]; 
+0

谢谢好的,我会尝试 – Soniya 2014-02-14 06:02:32

+0

@soniya是否能够使用uipage view controller创建您的epub?如果可以,请分享该想法 – Akhil 2014-02-14 09:15:39

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

我想永久突出显示文本。我有sqlite来存储任何元数据。 – Soniya 2012-07-26 10:46:49

相关问题