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