问题及原因:
首先要介绍的是什么的"出轨"(个人理解),这里的出轨指的是UITableView继承的是UIScrollView,所以在UIScrollView中嵌套UITableView,当UITableView滚动或者做其他操作的时候, UITableView会调用UIScrollView对应的代理方法,原因是子类调用父类的方法.从而造成了我们不想要的结果.
解决方法:
可以在UIScrollView的代理方法中做判断,看看调用者是不是UIScrollView的对象,如果是那么久就执行代码,不是就不执行.
以下是swift版本的代码:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//进行判断
if scrollView.isMember(of: UIScrollView.self){
//需要执行的代码
}
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
//进行判断
if scrollView.isMember(of: UIScrollView.self){
//需要执行的代码
}
}