Как получить координаты (CGRect) для выделенного текста в UIWebView?

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


person adnako    schedule 22.09.2011    source источник


Ответы (1)


Вы можете использовать функцию 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;
}
person hwaxxer    schedule 11.10.2011
comment
Я пытался, но он возвращает {(0,0),(0,0)}, не могли бы вы мне помочь? - person dineshprasanna; 23.03.2013
comment
Если мы установим свойство scalesPageToFit UIWebView, оно не будет работать должным образом. Любое другое решение для того же.? - person Girish; 18.10.2013
comment
как получить начальный и конечный диапазон выделенного текста в веб-просмотре - person Rakesh kumar; 03.03.2016