2011-02-09 9 views
1

私は、epubファイルを読み込むipad/iphone用の電子ブックアプリを開発しています。背景色のテキストを強調表示し、UIWebViewではなくUIViewでiBookやKindleに似たメモを作成する方法を知りたいと思います。私は長いタップでテキストをドラッグすることができます。しかし、私は "コピー"オプションしか見ることができません。ハイライトを追加してそのメニューにメモを追加したいと思います。背景色でテキストを強調表示する方法は?...私のドキュメントはUIWebViewに読み込まれます。UIwebviewでハイライトしてメモを作成

ありがとうございます。

+0

はいの場合は、私も助けてください。私はハイライトし、複数の行を選択できるようにするために、それが間違った練習である章のためにユニークになるように検索のjavascriptを使用しました。それは動作しますが、いつかはありません。私はこれらのハイライトを保存するためのデータベースを持っており、検索JavaScriptでハイライトすることができますが、ユーザーがibookのようにハイライトすることを許可したいと思います。あなたが何か提案があれば私も手伝ってください。 – Soniya

+0

私もこのことを知りたいと思っています。私はwebviewでカスタムアノテーションビューを追加したいと思います。 – anoop4real

答えて

1

共有メニューにメモとハイライトオプションを追加するだけです。あなたのviewcontroller viewdidload(またはあなたのビューが追加された後のいつでも)。以下は、メニューに2つのセレクターメソッドを持つ2つのメニュー項目を追加します。

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; 

また、テキストの上に半透明のUIViewをオーバーレイそして、あなたの選択を保持している矩形を決定するためにはJavaScriptのビットを使用することをお勧めします。

したがって、doNoteメソッド内で、javascriptをロードして実行します。以下のjavascriptを参照して、実行する可能性のある例を参照してください。

NSString *rectString = [webView stringByEvaluatingJavaScriptFromString:rectStringText]; 

以下は、それは本質的にあなたのテキストよりも大きくなるでしょうが、テキストの周囲に矩形を取得します:あなたは5行目に文字50を介して2行目に文字10で強調表示した場合、それはRECTを返します。それはとても終了行ラインを介して文字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+'}}'; 
} 

を強調し、今あなたが矩形の文字列を持っていることを、あなたはあなたのWebView内オーバーレイする文字列戻り、UIViewのからCRectを作成することができます。 [ノートでは、ズームを処理し、次の負荷のためにこのデータを保存する方法を理解する必要があります]

関連する問題