iOSドキュメントでは、UIWebViewクラスはUIScrollViewDelegateに準拠しています。しかし、UIWebViewインスタンスはコントローラのscrollViewDidScroll
メソッドを呼び出すことはありません。代理人は、すぐに正しく設定されますUIWebViewインスタンスがscrollViewDidScrollを呼び出さないのはなぜですか?
[webView setDelegate:self];
とwebViewDidFinishLoad
が正常に呼び出されます。
@interface WebviewController : UIViewController<UIWebViewDelegate, UIScrollViewDelegate>{
UIWebView *webView;
}
閲覧SOそのcategory solutionにつながる:
@implementation UIWebView(CustomScroll)
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
[self.delegate scrollViewDidScroll: scrollView];
}
@end
カテゴリーアプローチは基本的に同じないこと:デリゲートのscrollViewDidScrollメソッドを呼び出す。これは以下のように、コントローラは、両方の代表者、UIWebViewDelegateとUIScrollViewDelegateを実装しますでは、最初のアプローチはなぜ機能しないのですか?
はなかったですあなたはscrollViewの代理人を設定しますか? 'webView.scrollView.delegate = self'ですか? – pawelropa
いいえ、私はしませんでした。そして、はい、それは動作します! – alex
したがって、 'UIWebView'インスタンスはデフォルトで' scrollViews'のデリゲートをそのインスタンスに設定しますか?そうでなければ、カテゴリアプローチはうまくいかないでしょう。 – alex