問題及原因:
首先要介紹的是什么的"出軌"(個人理解),這里的出軌指的是UITableView繼承的是UIScrollView,所以在UIScrollView中嵌套UITableView,當UITableView滾動或者做其他操作的時候, UITableView會調用UIScrollView對應的代理方法,原因是子類調用父類的方法.從而造成了我們不想要的結果.
解決方法:
可以在UIScrollView的代理方法中做判斷,看看調用者是不是UIScrollView的對象,如果是那么久就執(zhí)行代碼,不是就不執(zhí)行.
以下是swift版本的代碼:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//進行判斷
if scrollView.isMember(of: UIScrollView.self){
//需要執(zhí)行的代碼
}
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
//進行判斷
if scrollView.isMember(of: UIScrollView.self){
//需要執(zhí)行的代碼
}
}