2011-09-22 10 views
15

私は単純なUIWebViewとHTMLを読み込んでいます。 選択したテキストをポイントしたPopoverViewを表示します。 私はUIMenuControllerのmenuFrameを取得してrectを使用できますが、結果は必要なだけ画面の角で正確ではありません。 画面サイズを計算してmenuFrame rectを取得して、選択範囲がどこにあるかを推測できますが、選択したテキストがどこにあるかを正確に知りたいと思います。 一般的に可能ですか?UIWebViewで選択したテキストの座標(CGRect)を取得する方法は?

答えて

15

選択したテキストの範囲オブジェクトに対して、javascript関数getBoundingClientRect()を使用できます。 これは私がそれを行う方法です。

function getRectForSelectedText() { 
    var selection = window.getSelection(); 
    var range = selection.getRangeAt(0); 
    var rect = range.getBoundingClientRect(); 
    return "{{" + rect.left + "," + rect.top + "}, {" + rect.width + "," + rect.height + "}}"; 
} 

とのUIWebView上のカテゴリーで、あなたは、このようなようにそれを使用することができます。

- (CGRect)rectForSelectedText{ 
    CGRect selectedTextFrame = CGRectFromString([self stringByEvaluatingJavaScriptFromString:@"getRectForSelectedText()"]); 
    return selectedTextFrame; 
} 
+0

私が試してみましたが、それは、{(0,0)を返し、(0 、0)}あなたが私を助けることができる – dineshprasanna

+1

私たちはUIWebViewのscalesPageToFitプロパティを設定すると、期待どおりに動作しません。同じための他のソリューション。 – Girish

+0

それはpdfファイルのために働きますか? –

関連する問題