2011-09-22 14 views
15

Mam prosty UIWebView z załadowanym html. Chcę pokazać PopoverView wskazał na zaznaczony tekst. Mogę uzyskać menuFrame z UIMenuController i użyć jego rect, ale wynik nie jest tak dokładny w rogach ekranu, ile potrzebuję. Mogę obliczyć rozmiar ekranu i uzyskać menuFrame rect, a następnie mogę przypuszczać, gdzie można znaleźć zaznaczenie, ale chcę dokładnie wiedzieć, gdzie jest zaznaczony tekst. Czy to na ogół możliwe?Jak uzyskać współrzędne (CGRect) dla zaznaczonego tekstu w UIWebView?

Odpowiedz

15

Możesz użyć funkcji javascript getBoundingClientRect() na obiekcie zakresu wybranego tekstu. To jak to zrobić:

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

aw kategorii na UIWebView, można go używać takich jak:

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

Próbowałem ale zwraca {(0,0), (0 , 0)} Czy mógłbyś mi pomóc? – dineshprasanna

+1

Jeśli ustawimy właściwość scalesPageToFit w UIWebView, to nie będzie działać zgodnie z oczekiwaniami. Każde inne rozwiązanie dla tego samego. – Girish

+0

czy to działa dla pliku pdf? –

Powiązane problemy