设置UIWebView scrollView委托会导致错误

时间:2012-02-29 19:56:43

标签: iphone objective-c ios ipad

所以我有以下代码:

 NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
    if ([currSysVer compare:@"5.0" options:NSNumericSearch] != NSOrderedAscending) {
        webScrollView = self.webView_.scrollView;
    } else {
        webScrollView = [self.webView_ defaultScrollView];
    }

webScrollView.delegate = self

当我滚动它时,给我:

-[UIWebView scrollViewDidScroll:]: unrecognized selector sent to instance 0x8e8610

这对于UIWebView调用scrollViewDidScroll \

的原因没有任何意义

3 个答案:

答案 0 :(得分:1)

如果查看here,UIWebView符合UIScrollViewDelegate。本质上它使用相同的委托,因为UIWebView是可滚动的(你可能会说它是UIScrollView的子类,虽然它没有在文档中明确说明,但可能是UIScrollView是WebView的一部分。)

答案 1 :(得分:0)

UIWebView HAS-A a scrollView,它是委托,意味着scrollViewDidScroll:方法由UIWebView实现,因为您正在使用该引用UIWebView提供给它的scrollView,你现在说你将处理这个回调,包括scrollViewDidScroll:,显然你不是为什么当委托调用发生时它失败了。

为什么要尝试指定为webview scrollview的委托?,该行为已经实现。我不确定如果你试图改变那种行为会很好,但无论如何你想成为scrollView的委托,那么你必须实现UIScrollViewDelegate协议,然后实现所需的方法。 / p>

答案 2 :(得分:0)

我找到了所有版本的解决方案

UIScrollView* sv = nil;
    for (UIView* v in  _webview.subviews) {
        if([v isKindOfClass:[UIScrollView class]]){
            sv = (UIScrollView*) v;
            sv.scrollEnabled = NO;
            sv.bounces = NO;

    }
}