Вызов метода при прокрутке UIWebView - PullRequest
2 голосов
/ 29 октября 2010

У меня есть UIWebView, который содержит много текстового содержимого. Мне нужно иметь возможность получать местоположение UIWebView каждый раз, когда он перемещается. Я использую этот код, чтобы получить точку:

pageYOffset = [[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];

теперь мне просто нужно сделать так, чтобы значение этой переменной обновлялось при каждом перемещении позиции UIWebView или при любой прокрутке. Можно ли вызывать метод всякий раз, когда прокручивается UIWebView?

Ответы [ 4 ]

6 голосов
/ 30 октября 2010

Вы должны расширить UIWebView, как показано ниже

@implementation UIWebView(CustomScroll)
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
    [self.delegate scrollViewDidScroll: scrollView];
}
@end

и реализовать scrollViewDidScroll на вашем контроллере, например:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
    NSLog("webview scrolled");
}

, и не забудьте установить свой контроллер на свойство делегатаUIWebView.

2 голосов
/ 29 октября 2010

Я считаю, что если в вашем заголовке ваш VC указан как UIScrollViewDelegate, вы можете использовать метод -(void)scrollViewDidScroll:(UIScrollView *)scrollView, чтобы узнать, когда он прокручивается.

1 голос
/ 20 января 2015

Это не правильно.Если вы будете использовать:

@implementation UIWebView(CustomScroll)
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
    [self.delegate scrollViewDidScroll: scrollView];
}
@end

Вы потеряете фокус при попытке ввести данные на странице на iOS7 и более

Вам необходимо реализовать пользовательский класс для UIWevView и перезаписать scrollViewDidScroll:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
[super scrollViewDidScroll:scrollView];
[((id<UIScrollViewDelegate>)self.delegate) scrollViewDidScroll:scrollView];
}
0 голосов
/ 29 октября 2010

если ваше требование заключается в продолжении загрузки веб-просмотра при прокрутке пользователя, вставьте код в

- (void)webViewDidStartLoad:(UIWebView *)webView
...