2011-02-09 52 views
1

我正在開發一個加載epub文件的ipad/iphone的電子書應用程序。我想知道如何使用背景顏色突出顯示文本,並在UIWebView和不UIView中製作類似於iBook或Kindle的筆記。我可以通過長按拖動來拖動選擇文本。但我只能看到「複製」選項。我想添加突出顯示並添加註釋到該菜單。如何用背景顏色高亮文本?...我的文檔被加載到UIWebView中。突出顯示並在UIwebview中做筆記

謝謝。

+0

如果是的話,你是否得到答案,那麼請幫助我。我使用搜索的JavaScript來突出顯示,並允許用戶選擇多行,以便它成爲一個錯誤的練習章節的唯一。它有效,但有時不行。我有數據庫來保存這些亮點,並能夠使用搜索JavaScript來突出顯示,但我想讓用戶突出顯示,就像在ibook中一樣,即使是單個單詞。如果您有任何建議,請幫助我。 – Soniya 2012-05-21 06:07:04

回答

1

您需要做的是將註釋和高亮選項添加到共享菜單。在您的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到您的網頁視圖內覆蓋。 [請注意,你將不得不弄清楚如何處理縮放和保存這些數據爲你的下一個負載]