Как выделить и сохранить выделенный текст в UIwebview с помощью Coregraphics - PullRequest
2 голосов
/ 28 февраля 2012

Как сделать постоянное выделение в UIWebView (содержащем содержимое epub), чтобы он мог просматривать его, когда бы он ни пришел на эту страницу. Из чего я пришел к выводу, что мне удалось получить индекс выделенного текста, который я мог сохранить в базе данных.

Что мне нужно для создания прозрачных прямоугольников, используя графику от начала до конца индекса. Но как узнать координаты текста, чтобы я мог нарисовать на нем прямоугольник.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2014

Чтобы сделать постоянное выделение в 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 голосов
/ 03 апреля 2012
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);
}
...