2013-04-12 12 views
9

Mam WebView, który wyświetla niektóre treści, które są często aktualizowane. Chciałbym wyświetlić w moim interfejsie licznik stron, który wskazywałby użytkownikowi, ile stron ma mieć przeglądarka internetowa, gdyby chciał ją wydrukować.Liczba stron WebView

Próbowałem robić:

NSRange r = NSMakeRange(0, 0); 
BOOL knows = [[[[webView mainFrame] frameView] documentView] knowsPageRange: &r]; 

co daje knows = YES ale r.length zawsze równa 1.

Jak mogę dostać się na te informacje? (Najlepiej w sposób efektywny, jeśli to możliwe).

+0

To głównie OSX pytanie, proszę wziąć to pod uwagę podczas edycji. –

+1

Po prostu pomysł, nie ma żadnego kodu. Możesz wydrukować go jako "pdf" w tle i policzyć te strony. – HAS

+0

@HAS To może zadziałać, chociaż wygląda na to dość powolny sposób. Robię to kilka razy na sekundę. –

Odpowiedz

2

Nie jest idealnie eleganckie rozwiązanie, ale możliwość mogą obejmować:

NSString *heightStr = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"]; // Get the height of our webView 
int height = [heightStr intValue]; 

CGFloat maxHeight = kDefaultPageHeight - 2*kMargin; 
CGFloat maxWidth = kDefaultPageWidth - 2*kMargin; 
int pages = ceil(height/maxHeight); 
return pages; 

poprzez Chris Mills' blog.

+0

To jest moje obecne rozwiązanie, chociaż dostaję "wysokość" przez być może bardziej elegancką '[[[[mainview WebView] frameView] documentView] bounds] .size.height'. Problem polega na tym, że sama sama WebView może być zmieniana na inną szerokość niż drukowana strona, co powoduje odmienne przepływanie zawartości i jej bardzo różną wysokość. –

Powiązane problemy