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方法。那么为什么第一种方法不起作用呢?
答案 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];}