Iphone 为什么UIWebView实例不调用scrollViewDidScroll?
iOS文档说明,该类符合UIScrollViewDelegate。但是UIWebView实例不调用其控制器的Iphone 为什么UIWebView实例不调用scrollViewDidScroll?,iphone,ios,uiwebview,Iphone,Ios,Uiwebview,iOS文档说明,该类符合UIScrollViewDelegate。但是UIWebView实例不调用其控制器的scrollViewDidScroll方法。委托的设置正好由 [webView setDelegate:self]; 并且成功调用了webviewdiffinishload。控制器同时实现两个委托UIWebViewDelegate和UIScrollViewDelegate,如下所示: @interface WebviewController : UIViewController<U
scrollViewDidScroll
方法。委托的设置正好由
[webView setDelegate:self];
并且成功调用了webviewdiffinishload
。控制器同时实现两个委托UIWebViewDelegate和UIScrollViewDelegate,如下所示:
@interface WebviewController : UIViewController<UIWebViewDelegate, UIScrollViewDelegate>{
UIWebView *webView;
}
这种分类方法基本上是相同的:调用代理的scrollViewDidScroll方法。那么为什么第一种方法不起作用呢?我猜您只为UIWebView设置了委托。 尝试设置scrollView的委托
webView.scrollView.delegate = self
应该没问题。这不正确。如果您将使用:
@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];}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView{
[超级scrollViewDidScroll:scrollView];
[((id)self.delegate)scrollViewDidScroll:scrollView];}
是否为scrollView设置了委托webView.scrollView.delegate=self
?不,我没有。是的,这很有效!那么,UIWebView
实例默认设置其scrollViews
的委托给该实例?看起来。。。否则,类别方法将无法工作。要工作,此代码必须将内部类别scrolView委托设置为webview,然后将内部UIWebView(CustomScroll)scrollViewDidScroll此消息通过self.delegate(UIWebView的委托)发送到响应webview委托的对象。所以,是的,这个代码可以工作。考虑使用KVO来代替子代码< > ScVIEW视图>代码> > <代码> > Cordon Obj/<代码>属性。修改uicrollview
的委托属性不一定是安全的,因为UIWebView
可以在内部使用它。
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
[super scrollViewDidScroll:scrollView];
[((id<UIScrollViewDelegate>)self.delegate) scrollViewDidScroll:scrollView];}