为什么UIWebView实例不调用scrollViewDidScroll?

时间:2012-08-23 14:21:16

标签: iphone ios uiwebview

iOS文档说,UIWebView类符合UIScrollViewDelegate。但是UIWebView实例不会调用其控制器的scrollViewDidScroll方法。

正好设置代表
[webView setDelegate:self];
成功调用

webViewDidFinishLoad。控制器实现委托,UIWebViewDelegate和UIScrollViewDelegate,如下所示:

@interface WebviewController : UIViewController<UIWebViewDelegate, UIScrollViewDelegate>{
    UIWebView *webView;
}

浏览SO会导致category solution

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

该类别方法基本相同:调用委托的scrollViewDidScroll方法。那么为什么第一种方法不起作用呢?

2 个答案:

答案 0 :(得分:29)

我的猜测是你只为UIWebView设置了委托。 尝试设置scrollView的委托。

webView.scrollView.delegate = self

应该没问题。

答案 1 :(得分:0)

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

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