必要なことは、共有メニューにメモとハイライトのオプションを追加することです。あなたの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;
少しの JavaScript を使用して、選択範囲を保持する rect を決定し、テキストの上に半透明の uiview をオーバーレイすることもできます。
そのため、doNote メソッド内で JavaScript をロードして実行します。以下の JavaScript を参照して、実行したい操作の例を確認してください。
NSString *rectString = [webView stringByEvaluatingJavaScriptFromString:rectStringText];
次の例では、テキストの周囲に四角形が作成されますが、本質的にテキストよりも大きくなります。行 2 の文字 10 から行 5 の文字 50 までを強調表示した場合、文字 0 行 2 から行 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+'}}';
}
長方形の文字列ができたので、返された文字列と uiview から CRect を作成して、webview 内にオーバーレイすることができます。[注: 次の読み込みのために、このデータをズームして保存する方法を理解する必要があります]