2013-04-12 2 views
9

私はWebViewのコンテンツを表示していますが、頻繁に更新されています。私は自分のUIにページカウンタを表示して、それを印刷するかどうかをWebビューが持つページの数をユーザに伝えたいと思います。WebViewのページ数

私がやって試してみました:

knows = YESを与えるが、 r.lengthは常に1

がどのように私は、この情報に取得することができます等しい

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

? (可能であれば、好ましくは演技的に)。

+0

経由

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; 

をこれは主にOSXの質問で編集する際に、考慮にそれをしてください。 –

+1

単なるアイデアです。コードはありません。あなたはバックグラウンドで 'pdf'として印刷し、それらのページを数えることができます。 – HAS

+0

@HASそれは動作するかもしれませんが、それについてはかなり遅い方法のように思えます。私はこれを毎秒何度もやっています。 –

答えて

2

ない完全にエレガントなソリューションが、可能性は含めることができますChris Mills' blog.

+0

これは私の現在の解決策ですが、おそらくもっとエレガントな[documentView] bounds] .size.height' [[[[webView mainFrame] frameView]によって 'height'が得られます。これに関する問題は、WebView自体が、印刷されたページとは異なる幅にサイズ変更され、コンテンツのリフローが異なって高さが非常に異なることです。 –

関連する問題