为什么一个UIWebView实例不能调用scrollViewDidScroll?
iOS文档说, UIWebView类符合UIScrollViewDelegate。 但是UIWebView实例不会调用其控制器的scrollViewDidScroll
方法。 代表就在正确的位置
[webView setDelegate:self];
并且webViewDidFinishLoad
被成功调用。 控制器实现了两个委托,UIWebViewDelegate和UIScrollViewDelegate,如下所示:
@interface WebviewController : UIViewController<UIWebViewDelegate, UIScrollViewDelegate>{ UIWebView *webView; }
浏览SO导致该类别的解决scheme :
@implementation UIWebView(CustomScroll) - (void) scrollViewDidScroll:(UIScrollView *)scrollView{ [self.delegate scrollViewDidScroll: scrollView]; } @end
该类别方法基本相同:调用委托的scrollViewDidScroll方法。 那么为什么第一种方法不起作用呢?
我的猜测是你只为UIWebView设置委托。 尝试设置scrollView的委托。
webView.scrollView.delegate = self
应该没问题。
这是不正确的。 如果您将使用:
@implementation UIWebView(CustomScroll) - (void) scrollViewDidScroll:(UIScrollView *)scrollView{ [self.delegate scrollViewDidScroll: scrollView]; } @end
尝试在iOS7及更多页面上input数据时,您将失去焦点
您需要为UIWevView实现自定义类并覆盖scrollViewDidScroll:
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{ [super scrollViewDidScroll:scrollView]; [((id<UIScrollViewDelegate>)self.delegate) scrollViewDidScroll:scrollView];}