2014-01-26 3 views
1

Я использовал следующий код для разбивки на страницы UIWebView.Как получить номер страницы UIWebView

self.webView.paginationMode = UIWebPaginationModeLeftToRight; 
self.webView.paginationBreakingMode = UIWebPaginationBreakingModePage; 
self.webView.scrollView.pagingEnabled = YES; 

Теперь я хочу знать общее количество созданных страниц. В документе IOS7 говорится, что UIWebView имеет свойство pageCount. Я попробовал, но он всегда возвращает 1.

Как я могу получить количество страниц, созданных после разбивки на страницы?

Спасибо.

ответ

2

Если вы хотите только количество страниц, которые можно использовать CoreGraphics

CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)[NSURL fileURLWithPath:@"your path"]); 
int pageCount = CGPDFDocumentGetNumberOfPages(pdf); 
CGPDFDocumentRelease(pdf); 

Если вы хотите посчитать страницы для содержания HTML, нужно установить делегат

self.webView.delegate = self; 

и реализовать метод UIWebViewDelegate

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSUInteger count1 = webView.pageCount; // for iOS7 only! 

    NSUInteger count2 = webView.scrollView.contentSize.width/webView.scrollView.frame.size.width; // for horizontal paging 

    NSUInteger count3 = webView.scrollView.contentSize.height/webView.scrollView.frame.size.height; // for vertical paging 
} 

Обратите внимание, что вы можете получить pageCount только после полного рендеринга запрашиваемой HTML-страницы.

+0

Я использую UIWebView для отображения HTML вместо PDF. Есть ли способ показать количество номеров страниц с разбивкой по страницам? – user890207

+0

Прочтите мой расширенный ответ выше. – malex

+0

Спасибо. Это работает. Я также замечаю, что могу поставить pageCount внутри 'viewDidAppear', и он также работает. – user890207

1

UIWebView является подклассом UIScrollView. Вы можете обнаружить UIWebView событие изменения страницы для просмотра прокрутки метод делегата:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 

Этот делегат будет вызываться каждый раз, когда Webview свитки. Ведите номер своей страницы самостоятельно. Вы можете использовать scrollView.contentOffset.x и scrollView.contentOffset.y, чтобы определить направление прокрутки.

Факс: Факс: Факс:

Дополнительную информацию можно приобрести: here.

EDIT Мы можем найти номер страницы scrollview из contentoffset. Попробуйте что-то подобное для webView. int page = scrollView.contentOffset.x/scrollView.frame.size.width;

+0

Мне нужно знать общее количество страниц, прежде чем прокручивать страницу. Мне нужно передать это значение на экран отображения PageControl. Фактически, я использовал аналогичную функцию, чтобы получить страницу 'self.pageControl.numberOfPages = self.webView.scrollView.contentSize.width/pageWidth;', но 'scrollView.contentSize.width' показывает только одну ширину страницы. Я ожидаю, что он отобразит ширину всех страниц. – user890207

+0

Вы пробовали scrollView.contentOffset.x inted contentSize.width ?? – Rashad

Смежные вопросы