UIWebView滚动时调用方法

发布于 2024-09-29 20:41:05 字数 276 浏览 8 评论 0原文

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

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

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

I have a UIWebView that contains a lot of text content. I need to be able to get the location of the UIWebView every time it moves. I am using this code to get the point:

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

now I just need to make it so that this variables value is updated everytime the UIWebView position moves, or there is any scrolling. Is it possible to call a method whenever the UIWebView scrolls?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

凹づ凸ル 2024-10-06 20:41:06

您应该扩展UIWebView,如下所示

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

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

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

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

You should extend UIWebView, like below

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

and implement scrollViewDidScroll on your controller like:

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

and don't forget to set your controller to the delegate property of UIWebView.

护你周全 2024-10-06 20:41:06

我相信,如果您的标头将您的 VC 列为 UIScrollViewDelegate,您可以使用
-(void)scrollViewDidScroll:(UIScrollView *)scrollView 方法来查找何时滚动。

I believe that if your header lists your VC as a UIScrollViewDelegate, you can use the
-(void)scrollViewDidScroll:(UIScrollView *)scrollView method to find out when it scrolls.

刘备忘录 2024-10-06 20:41:06

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

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

This is not correct. If you will use:

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

You will lose focus when try to enter data on page on iOS7 and more

You need to implement custom class for UIWevView and overwrite scrollViewDidScroll:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
[super scrollViewDidScroll:scrollView];
[((id<UIScrollViewDelegate>)self.delegate) scrollViewDidScroll:scrollView];
}
救赎№ 2024-10-06 20:41:06

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

- (void)webViewDidStartLoad:(UIWebView *)webView

if your requirement is to keep loading webview when user scrolls then you should paste your code into

- (void)webViewDidStartLoad:(UIWebView *)webView
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文