我不确定这是怎么回事。我关注此帖:check if UIWebView scrolls to the bottom
我想知道scrollViewScrolls什么时候做一些自定义的事情。我是UIWebView的子类。到目前为止,我所做的只是:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
[super scrollViewDidScroll:scrollView];
NSLog(@"%s", __FUNCTION__);
}
它在[super scrollViewDidScroll:scrollView]
方法崩溃了。当我删除该行时,它工作正常。我不想带走超类的这种方法的实现。我只是想为它添加一些自定义功能(将一个工具栏放在webview上面,就像Facebook应用程序一样)。这有什么原因导致崩溃吗?感谢。
答案 0 :(得分:3)
您确定UIWebView
实际上是否实现了该委托方法?因为它听起来可能不是。在覆盖可选的委托方法时,您应该使用以下构造:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if ([UIWebView instancesRespondToSelector:_cmd]) {
[super scrollViewDidScroll:scrollView];
}
NSLog(@"%s", __PRETTY_FUNCTION__);
}
如果超类实际上没有实现该方法,这不仅会避免调用super,而且如果OS更新导致超类开始响应该方法,它将自动开始调用super。
另请注意,您需要对超类名称进行硬编码(例如UIWebView
)。尝试使用[self superclass]
或[super class]
会给你错误的结果。