2011-09-22 21 views
15

Yüklü html ile basit UIWebView var. PopoverView'un seçili metne işaret ettiğini göstermek istiyorum. UIMenuController'ın menuFrame'sini alabilir ve rectini kullanabilirim ancak sonuç ekranın köşelerinde ihtiyacım olan kadar doğru değil. Ekran boyutunu hesaplayabilir ve menuFrame rect işlevini alabilir ve sonra seçimin nerede bulunduğunu varsayabilirim, ancak seçili metnin nerede olduğunu tam olarak bilmek istiyorum. Genelde mümkün mü?UIWebView'da seçilen metin için koordinatlar (CGRect) nasıl alınır?

cevap

15

Seçilen metnin aralık nesnesindeki getBoundingClientRect() javascript işlevini kullanabilirsiniz. (0 denedim

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

ama {(0,0) döndürür:

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

ve UIWebView üzerinde bir kategoride

, bu tür gibi kullanabilirsiniz: Bu benim böyle yaparız , 0)} – dineshprasanna

+1

bana yardımcı olabilir misiniz UIWebView scalesPageToFit özelliğini ayarlarsak, beklendiği gibi çalışmaz. Aynı için başka bir çözüm. – Girish

+0

pdf dosyası için çalışıyor mu? –