共有メニューにメモとハイライトオプションを追加するだけです。あなたの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を作成することができます。 [ノートでは、ズームを処理し、次の負荷のためにこのデータを保存する方法を理解する必要があります]
はいの場合は、私も助けてください。私はハイライトし、複数の行を選択できるようにするために、それが間違った練習である章のためにユニークになるように検索のjavascriptを使用しました。それは動作しますが、いつかはありません。私はこれらのハイライトを保存するためのデータベースを持っており、検索JavaScriptでハイライトすることができますが、ユーザーがibookのようにハイライトすることを許可したいと思います。あなたが何か提案があれば私も手伝ってください。 – Soniya
私もこのことを知りたいと思っています。私はwebviewでカスタムアノテーションビューを追加したいと思います。 – anoop4real