Ho un semplice UIWebView con HTML caricato. Voglio mostrare PopoverView puntato sul testo selezionato. Posso ottenere il menuFrame di UIMenuController e usare il suo rect, ma il risultato non è accurato agli angoli dello schermo quanto mi serve. Posso calcolare le dimensioni dello schermo e ottenere menu frame rect e quindi posso supporre dove si trova la selezione, ma voglio sapere esattamente dove si trova il testo selezionato. È generalmente possibile?Come ottenere le coordinate (CGRect) per il testo selezionato in UIWebView?
15
A
risposta
15
È possibile utilizzare la funzione javascript getBoundingClientRect() sull'oggetto intervallo del testo selezionato. Questo è come lo faccio:
function getRectForSelectedText() {
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var rect = range.getBoundingClientRect();
return "{{" + rect.left + "," + rect.top + "}, {" + rect.width + "," + rect.height + "}}";
}
e in una categoria sulla UIWebView, si potrebbe utilizzare come tale:
- (CGRect)rectForSelectedText{
CGRect selectedTextFrame = CGRectFromString([self stringByEvaluatingJavaScriptFromString:@"getRectForSelectedText()"]);
return selectedTextFrame;
}
ho provato ma restituisce {(0,0), (0 , 0)} potresti aiutarmi per favore – dineshprasanna
Se impostiamo la proprietà scalesPageToFit di UIWebView, allora non funziona come previsto. Qualsiasi altra soluzione per lo stesso.? – Girish
funziona per file pdf? –