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