我正在開發一個加載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