12

iOS のドキュメントによると、UIWebViewクラスは UIScrollViewDelegate に準拠しています。scrollViewDidScrollしかし、UIWebView インスタンスはそのコントローラーのメソッドを呼び出しません。デリゲートは

[webView setDelegate:self];

正常にwebViewDidFinishLoad呼び出されます。コントローラーは、UIWebViewDelegate と UIScrollViewDelegate の両方のデリゲートを次のように実装します。

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

SO をブラウジングすると、そのカテゴリのソリューションにつながります。

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

そのカテゴリ アプローチは基本的に同じことを行います: デリゲートの scrollViewDidScroll メソッドを呼び出します。では、なぜ最初のアプローチがうまくいかないのでしょうか?

4

2 に答える 2

29

私の推測では、UIWebView に対してのみデリゲートを設定していると思います。scrollView のデリゲートを設定してみてください。

webView.scrollView.delegate = self

大丈夫なはずです。

于 2012-08-23T14:37:04.347 に答える