15

ロードされたhtmlを含むシンプルなUIWebViewがあります。選択したテキストを指す PopoverView を表示したい。UIMenuController の menuFrame を取得してその rect を使用できますが、結果は画面の隅で必要なほど正確ではありません。画面サイズを計算して menuFrame rect を取得すると、選択範囲がどこにあるかを推測できますが、選択したテキストがどこにあるかを正確に知りたいです。一般的に可能ですか?

4

1 に答える 1

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;
}
于 2011-10-11T11:30:52.527 に答える