Как получить координаты (CGRect) для выделенного текста в UIWebView? - PullRequest
15 голосов
/ 22 сентября 2011

У меня есть простой UIWebView с загруженным HTML.Я хочу показать PopoverView, указывающий на выделенный текст.Я могу получить menuFrame UIMenuController и использовать его прямоугольник, но результат не так точен в углах экрана, как мне нужно.Я могу рассчитать размер экрана и получить прямоугольник menuFrame, а затем предположить, где можно найти выделение, но я хочу точно знать, где находится выделенный текст.Это вообще возможно?

1 Ответ

15 голосов
/ 11 октября 2011

Вы можете использовать функцию 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;
}
...