我正在开发一个加载epub文件的ipad/iphone的电子书应用程序。我想知道如何使用背景颜色突出显示文本,并在UIWebView和不UIView中制作类似于iBook或Kindle的笔记。我可以通过长按拖动来拖动选择文本。但我只能看到“复制”选项。我想添加突出显示并添加注释到该菜单。如何用背景颜色高亮文本?...我的文档被加载到UIWebView中。突出显示并在UIwebview中做笔记
谢谢。
我正在开发一个加载epub文件的ipad/iphone的电子书应用程序。我想知道如何使用背景颜色突出显示文本,并在UIWebView和不UIView中制作类似于iBook或Kindle的笔记。我可以通过长按拖动来拖动选择文本。但我只能看到“复制”选项。我想添加突出显示并添加注释到该菜单。如何用背景颜色高亮文本?...我的文档被加载到UIWebView中。突出显示并在UIwebview中做笔记
谢谢。
您需要做的是将注释和高亮选项添加到共享菜单。在您的viewcontroller viewdidload中(或添加视图后的任何时候)。下面将两个选择器方法添加到菜单中。
UIMenuItem *customMenuItem1 = [[UIMenuItem alloc] initWithTitle:@"Highlight" action:@selector(doHighlight:)];
UIMenuItem *customMenuItem2 = [[UIMenuItem alloc] initWithTitle:@"Note" action:@selector(doNote:)];
//[myArray addObject:customMenuItem2];
NSMutableArray *myArray = [[NSMutableArray alloc]initWithObjects:customMenuItem1,customMenuItem2, nil ] ;
[UIMenuController sharedMenuController].menuItems = myArray;
您可能还想使用一点javascript来确定保留您的选择的矩形,然后在文本上覆盖半透明的用户视图。
因此,在您的doNote方法中,加载JavaScript并运行它,请参阅下面的JavaScript以获取您可能想要执行的操作的示例。
NSString *rectString = [webView stringByEvaluatingJavaScriptFromString:rectStringText];
以下将得到一个矩形中的文本,但它本质上会比你的文本大:如果你在焦炭10第2行通过炭50第5行强调,它会返回一个矩形即通过突出线条底线炭0线2 5.
function selectEl(x,y){
document.designMode = "on";
var el = document.elementFromPoint(x, y);
var rect = el.getBoundingClientRect();
var vx = rect.left;
var width = rect.right - vx;
var height = rect.bottom - rect.top;
var vy = rect.top;
var range = document.createRange();
range.selectNodeContents(el);
var sel = document.getSelection();
sel.removeAllRanges();
sel.addRange(range);
document.designMode = "off";
rectString = '{{'+vx+','+vy+'},{'+width+','+height+'}}';
}
所以,现在你有一个长方形的字符串,您可以创建一个从的CRect返回的字符串和的UIView到您的网页视图内覆盖。 [请注意,你将不得不弄清楚如何处理缩放和保存这些数据为你的下一个负载]
如果是的话,你是否得到答案,那么请帮助我。我使用搜索的JavaScript来突出显示,并允许用户选择多行,以便它成为一个错误的练习章节的唯一。它有效,但有时不行。我有数据库来保存这些亮点,并能够使用搜索JavaScript来突出显示,但我想让用户突出显示,就像在ibook中一样,即使是单个单词。如果您有任何建议,请帮助我。 – Soniya 2012-05-21 06:07:04