我有一个包含大量文本内容的 UIWebView。我需要能够在每次移动时获取 UIWebView 的位置。我正在使用这段代码来说明问题:
pageYOffset = [[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];
现在我只需要让它在每次 UIWebView 位置移动或有任何滚动时更新这个变量值。UIWebView 滚动时是否可以调用方法?
我有一个包含大量文本内容的 UIWebView。我需要能够在每次移动时获取 UIWebView 的位置。我正在使用这段代码来说明问题:
pageYOffset = [[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];
现在我只需要让它在每次 UIWebView 位置移动或有任何滚动时更新这个变量值。UIWebView 滚动时是否可以调用方法?
您应该扩展 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