Вызов метода при прокрутке UIWebView
У меня есть UIWebView, который содержит много текстового содержимого. Мне нужно иметь возможность получать местоположение UIWebView каждый раз, когда он перемещается. Я использую этот код, чтобы получить точку:
pageYOffset = [[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];
теперь мне просто нужно сделать так, чтобы значение этой переменной обновлялось при каждом перемещении позиции UIWebView или при любой прокрутке. Можно ли вызвать метод всякий раз, когда прокручивается UIWebView?
4 ответа
Вы должны расширить UIWebView, как показано ниже
@implementation UIWebView(CustomScroll)
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
[self.delegate scrollViewDidScroll: scrollView];
}
@end
и реализовать scrollViewDidScroll на вашем контроллере, как:
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog("webview scrolled");
}
и не забудьте установить свой контроллер на свойство делегата UIWebView.
Я считаю, что если ваш заголовок перечисляет ваш VC как UIScrollViewDelegate, вы можете использовать -(void)scrollViewDidScroll:(UIScrollView *)scrollView
способ узнать, когда он прокручивается.
Это не правильно. Если вы будете использовать:
@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];
}
Если ваше требование состоит в том, чтобы продолжать загружать webview, когда пользователь прокручивает, тогда вы должны вставить свой код
- (void)webViewDidStartLoad:(UIWebView *)webView