2013-04-12 21 views
9

Tôi có một số WebView hiển thị một số nội dung thường xuyên được cập nhật. Tôi muốn hiển thị một bộ đếm trang trong giao diện người dùng của tôi sẽ cho người dùng biết số trang web sẽ xem nếu họ in nó.Số trang webView

Tôi đã cố gắng thực hiện:

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

mang đến cho knows = YES nhưng r.length luôn bằng 1.

Làm thế nào tôi có thể nhận được thông tin này? (Tốt nhất là theo cách thực hiện, nếu có thể).

+0

Đây là một câu hỏi OSX chủ yếu, xin vui lòng đi mà vào xem xét khi chỉnh sửa. –

+1

Chỉ là một ý tưởng, không có bất kỳ mã nào. Bạn có thể in nó dưới dạng 'pdf' trong nền và đếm những trang đó. – HAS

+0

@HAS Điều đó có thể hoạt động, mặc dù nó có vẻ là một cách khá chậm để đi về nó. Tôi đang làm điều này vài lần mỗi giây. –

Trả lời

2

Không phải là một giải pháp hoàn hảo tao nhã, nhưng một khả năng có thể bao gồm:

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; 

qua Chris Mills' blog.

+0

Đây là giải pháp hiện tại của tôi, mặc dù tôi nhận được 'chiều cao' bởi một tài liệu có khung thanh lịch hơn [[[webView mainFrame] frameView]' view [webView mainFrame]] .size.height'. Vấn đề với điều này là bản thân WebView có thể được thay đổi kích thước thành một chiều rộng khác với một trang được in làm cho nội dung phản ánh khác nhau và có chiều cao rất khác nhau. –