在UIWebView滚动时调用方法

时间:2010-10-29 03:04:36

标签: javascript iphone uiwebview scroll method-call

我有一个包含大量文本内容的UIWebView。我需要能够在每次移动时获取UIWebView的位置。我正在使用此代码来说明问题:

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

现在我只需要这样做,以便每次UIWebView位置移动时更新此变量值,或者有任何滚动。是否可以在UIWebView滚动时调用方法?

4 个答案:

答案 0 :(得分:6)

您应该扩展UIWebView,如下所示

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

并在控制器上实现scrollViewDidScroll,如:

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

并且不要忘记将控制器设置为UIWebView的委托属性。

答案 1 :(得分:2)

我相信如果你的标题将你的VC列为UIScrollViewDelegate,你可以使用 -(void)scrollViewDidScroll:(UIScrollView *)scrollView方法找出滚动的时间。

答案 2 :(得分:1)

这不正确。如果您将使用:

@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];
}

答案 3 :(得分:0)

如果您的要求是在用户滚动时继续加载webview,那么您应该将代码粘贴到

- (void)webViewDidStartLoad:(UIWebView *)webView